xhxu 5 лет назад
Родитель
Сommit
ccc258bf36
10 измененных файлов: 1487 добавлений и 95 удалений
  1. +7
    -0
      mallinkAdmin/pom.xml
  2. +68
    -0
      mallinkAdmin/src/main/java/com/iformall/utils/NeusoftUtil.java
  3. +616
    -95
      mallinkAdmin/src/main/resources/db/migration/V202009211000__集团版数据处理.sql
  4. +1
    -0
      mallinkAdmin/src/main/resources/tessdata/configs/api_config
  5. +1
    -0
      mallinkAdmin/src/main/resources/tessdata/configs/digits
  6. +1
    -0
      mallinkAdmin/src/main/resources/tessdata/configs/hocr
  7. Двоичные данные
      mallinkAdmin/src/main/resources/tessdata/eng.traineddata
  8. Двоичные данные
      mallinkAdmin/src/main/resources/tessdata/osd.traineddata
  9. Двоичные данные
      mallinkAdmin/src/main/resources/tessdata/pdf.ttf
  10. +793
    -0
      mallinkAdmin/src/main/resources/tessdata/pdf.ttx

+ 7
- 0
mallinkAdmin/pom.xml Просмотреть файл

@@ -52,6 +52,13 @@
<version>5.2.4</version>
</dependency>

<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.2</version>
</dependency>

</dependencies>

<build>


+ 68
- 0
mallinkAdmin/src/main/java/com/iformall/utils/NeusoftUtil.java Просмотреть файл

@@ -0,0 +1,68 @@
package com.iformall.utils;

import okhttp3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.time.format.DateTimeFormatter;

public class NeusoftUtil {

private static final Logger logger = LoggerFactory.getLogger(NeusoftUtil.class);

/**
* 域名地址
*/
private static final String domain = "http://ota.neusoft.com";

/**
* 获取验证码
*/
private static final String loginCaptchaUrl = "/service-user/login/captcha";

/**
* 登陆
* captcha: "05684"
* password: "wycjituan1"
* username: "wycjituan1"
*/
private static final String loginUrl = "/service-user/login";

/**
* 店铺交易信息
* ?orgId=1&limit=10&offset=0
*/
private static final String shopOrderSummaryUrl = "/unionService/orderStatistics/shopOrderSummary";


private final OkHttpClient client = new OkHttpClient();

private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");


public static void main(String[] args) {
File imageFile = new File("C:\\Users\\xiaohu\\Desktop\\img\\captcha.jpg");

// ITesseract instance = new Tesseract();
// try {
// System.out.println(System.getProperty("user.dir"));
//
// instance.setDatapath( "C:/Users/xiaohu/IdeaFmlkProjects/formallProject/mallinkAdmin/target/classes/tessdata");
// String s = instance.doOCR(imageFile);
// System.out.println(s);
// } catch (TesseractException e) {
// e.printStackTrace();
// }


}

private boolean checkRespFailed(String resp) {
if (resp.startsWith("<html>") || resp.startsWith("<!DOCTYPE html>")) {
return true;
}
return false;
}

}

+ 616
- 95
mallinkAdmin/src/main/resources/db/migration/V202009211000__集团版数据处理.sql Просмотреть файл

@@ -1,42 +1,14 @@
--备份关键表数据,
create table wx_c_user_basic_info_',@dateStr,' like wx_c_user_basic_info;
insert into wx_c_user_basic_info_',@dateStr,' select * from wx_c_user_basic_info;
create table wx_c_user_',@dateStr,' like wx_c_user;
insert into wx_c_user_',@dateStr,' select * from wx_c_user;
create table wx_order_',@dateStr,' like wx_order;
insert into wx_order_',@dateStr,' select * from wx_order;
create table wx_coupon_order_',@dateStr,' like wx_coupon_order;
insert into wx_coupon_order_',@dateStr,' select * from wx_coupon_order;
create table wx_pay_order_',@dateStr,' like wx_pay_order;
insert into wx_pay_order_',@dateStr,' select * from wx_pay_order;
create table wx_refund_order_',@dateStr,' like wx_refund_order;
insert into wx_refund_order_',@dateStr,' select * from wx_refund_order;
create table wx_order_group_',@dateStr,' like wx_order_group;
insert into wx_order_group_',@dateStr,' select * from wx_order_group;
create table wx_order_press_',@dateStr,' like wx_order_press;
insert into wx_order_press_',@dateStr,' select * from wx_order_press;
create table wx_c_user_from_b_',@dateStr,' like wx_c_user_from_b;
insert into wx_c_user_from_b_',@dateStr,' select * from wx_c_user_from_b;
create table wx_activity_join_',@dateStr,' like wx_activity_join;
insert into wx_activity_join_',@dateStr,' select * from wx_activity_join;
create table wx_question_log_',@dateStr,' like wx_question_log;
insert into wx_question_log_',@dateStr,' select * from wx_question_log;
create table wx_game_action_log_',@dateStr,' like wx_game_action_log;
insert into wx_game_action_log_',@dateStr,' select * from wx_game_action_log;
create table wx_credit_history_',@dateStr,' like wx_credit_history;
insert into wx_credit_history_',@dateStr,' select * from wx_credit_history;
create table wx_score_history_',@dateStr,' like wx_score_history;
insert into wx_score_history_',@dateStr,' select * from wx_score_history;
create table wx_card_spend_',@dateStr,' like wx_card_spend;
insert into wx_card_spend_',@dateStr,' select * from wx_card_spend;
create table wx_c_user_tags_',@dateStr,' like wx_c_user_tags;
insert into wx_c_user_tags_',@dateStr,' select * from wx_c_user_tags;

--所有数据改成集团的数据 118.044s
--groupTenantId 集团tenantId
--tenantIds 子广场,拼接
--tenantIds--子广场, 拼接

--备份关键表数据,
call back_up_and_move(varchar tenantIds,varchar groupTenantId);

--所有数据改成集团的数据
--tenantId 集团tenantId
--subTenantIds 子广场,拼接
--el: call init_after_group('1025', '1008,1020');
call init_after_group(groupTenantId, tenantIds);
call init_after_group(varchar tenantId,varchar subTenantIds);

--合并子广场重复会员 清缓存
--tenantIds 子广场,拼接
@@ -44,16 +16,335 @@ call init_after_group(groupTenantId, tenantIds);
--call move_after_group(tenantIds);


/*备份手机号重复数据**/
CREATE TABLE wx_c_user_basic_info_1008_1020 LIKE wx_c_user_basic_info;

INSERT INTO wx_c_user_basic_info_1008_1020 SELECT * FROM wx_c_user_basic_info WHERE final_tenant_id IN ('1008','1020') AND phone IN (
SELECT phone FROM wx_c_user_basic_info t WHERE `final_tenant_id` IN ('1008','1020') GROUP BY phone HAVING COUNT(1) > 1
)
--单独处理 wx_c_user_basic_info,wx_c_user_tags 归属集团
--UPDATE wx_c_user_basic_info SET final_tenant_id = groupTenantId WHERE FIND_IN_SET(final_tenant_id,tenantIds);
--UPDATE wx_c_user_tags SET tenant_id = groupTenantId WHERE FIND_IN_SET(tenant_id,tenantIds);






CREATE DEFINER=`root`@`%` PROCEDURE `back_up_and_move`(IN tenantIds VARCHAR(125),IN groupTenantId VARCHAR(125))
BEGIN

select concat('_',date_format(now(),'%Y%m%d'),'_',REPLACE(tenantIds,',','_')) into @backUpSuffix;
select concat(@backUpSuffix,'_merge') into @mergeSuffix;


set @backUpSql1_0 = concat('create table wx_c_user_basic_info',@backUpSuffix,' like wx_c_user_basic_info;');
PREPARE back_up_sql1_0 FROM @backUpSql1_0;
EXECUTE back_up_sql1_0;
DEALLOCATE PREPARE back_up_sql1_0;
set @backUpSql2_0 = concat('insert into wx_c_user_basic_info',@backUpSuffix,' select * from wx_c_user_basic_info where FIND_IN_SET(final_tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql2_0 FROM @backUpSql2_0;
EXECUTE back_up_sql2_0;
DEALLOCATE PREPARE back_up_sql2_0;

set @backUpSql1_1 = concat('create table wx_c_user_basic_info',@mergeSuffix,' like wx_c_user_basic_info;');
PREPARE back_up_sql1_1 FROM @backUpSql1_1;
EXECUTE back_up_sql1_1;
DEALLOCATE PREPARE back_up_sql1_1;
set @backUpSql2_1 = concat('insert into wx_c_user_basic_info',@mergeSuffix,' select * from wx_c_user_basic_info',@backUpSuffix,' where phone in (SELECT phone FROM wx_c_user_basic_info',@backUpSuffix,' GROUP BY phone HAVING COUNT(1) > 1);');
PREPARE back_up_sql2_1 FROM @backUpSql2_1;
EXECUTE back_up_sql2_1;
DEALLOCATE PREPARE back_up_sql2_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_basic_info表备份处理数据成功',null);

set @backUpSql3_0 = concat('create table wx_c_user',@backUpSuffix,' like wx_c_user;');
PREPARE back_up_sql3_0 FROM @backUpSql3_0;
EXECUTE back_up_sql3_0;
DEALLOCATE PREPARE back_up_sql3_0;
set @backUpSql4_0 = concat('insert into wx_c_user',@backUpSuffix,' select * from wx_c_user where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql4_0 FROM @backUpSql4_0;
EXECUTE back_up_sql4_0;
DEALLOCATE PREPARE back_up_sql4_0;

set @backUpSql3_1 = concat('create table wx_c_user',@mergeSuffix,' like wx_c_user;');
PREPARE back_up_sql3_1 FROM @backUpSql3_1;
EXECUTE back_up_sql3_1;
DEALLOCATE PREPARE back_up_sql3_1;
set @backUpSql4_1 = concat('insert into wx_c_user',@mergeSuffix,' select * from wx_c_user',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql4_1 FROM @backUpSql4_1;
EXECUTE back_up_sql4_1;
DEALLOCATE PREPARE back_up_sql4_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user表备份、处理数据成功',null);

set @backUpSql5_0 = concat('create table wx_order',@backUpSuffix,' like wx_order;');
PREPARE back_up_sql5_0 FROM @backUpSql5_0;
EXECUTE back_up_sql5_0;
DEALLOCATE PREPARE back_up_sql5_0;
set @backUpSql6_0 = concat('insert into wx_order',@backUpSuffix,' select * from wx_order where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql6_0 FROM @backUpSql6_0;
EXECUTE back_up_sql6_0;
DEALLOCATE PREPARE back_up_sql6_0;

set @backUpSql5_1 = concat('create table wx_order',@mergeSuffix,' like wx_order;');
PREPARE back_up_sql5_1 FROM @backUpSql5_1;
EXECUTE back_up_sql5_1;
DEALLOCATE PREPARE back_up_sql5_1;
set @backUpSql6_1 = concat('insert into wx_order',@mergeSuffix,' select * from wx_order',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql6_1 FROM @backUpSql6_1;
EXECUTE back_up_sql6_1;
DEALLOCATE PREPARE back_up_sql6_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order表备份、处理数据成功',null);

set @backUpSql7_0 = concat('create table wx_coupon_order',@backUpSuffix,' like wx_coupon_order;');
PREPARE back_up_sql7_0 FROM @backUpSql7_0;
EXECUTE back_up_sql7_0;
DEALLOCATE PREPARE back_up_sql7_0;
set @backUpSql8_0 = concat('insert into wx_coupon_order',@backUpSuffix,' select * from wx_coupon_order where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql8_0 FROM @backUpSql8_0;
EXECUTE back_up_sql8_0;
DEALLOCATE PREPARE back_up_sql8_0;

set @backUpSql7_1 = concat('create table wx_coupon_order',@mergeSuffix,' like wx_coupon_order;');
PREPARE back_up_sql7_1 FROM @backUpSql7_1;
EXECUTE back_up_sql7_1;
DEALLOCATE PREPARE back_up_sql7_1;
set @backUpSql8_1 = concat('insert into wx_coupon_order',@mergeSuffix,' select * from wx_coupon_order',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,') or owner_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql8_1 FROM @backUpSql8_1;
EXECUTE back_up_sql8_1;
DEALLOCATE PREPARE back_up_sql8_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_coupon_order表备份、处理数据成功',null);

set @backUpSql9_0 = concat('create table wx_pay_order',@backUpSuffix,' like wx_pay_order;');
PREPARE back_up_sql9_0 FROM @backUpSql9_0;
EXECUTE back_up_sql9_0;
DEALLOCATE PREPARE back_up_sql9_0;
set @backUpSql10_0 = concat('insert into wx_pay_order',@backUpSuffix,' select * from wx_pay_order where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql10_0 FROM @backUpSql10_0;
EXECUTE back_up_sql10_0;
DEALLOCATE PREPARE back_up_sql10_0;

set @backUpSql9_1 = concat('create table wx_pay_order',@mergeSuffix,' like wx_pay_order;');
PREPARE back_up_sql9_1 FROM @backUpSql9_1;
EXECUTE back_up_sql9_1;
DEALLOCATE PREPARE back_up_sql9_1;
set @backUpSql10_1 = concat('insert into wx_pay_order',@mergeSuffix,' select * from wx_pay_order',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql10_1 FROM @backUpSql10_1;
EXECUTE back_up_sql10_1;
DEALLOCATE PREPARE back_up_sql10_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_pay_order表备份、处理数据成功',null);

set @backUpSql11_0 = concat('create table wx_refund_order',@backUpSuffix,' like wx_refund_order;');
PREPARE back_up_sql11_0 FROM @backUpSql11_0;
EXECUTE back_up_sql11_0;
DEALLOCATE PREPARE back_up_sql11_0;
set @backUpSql12_0 = concat('insert into wx_refund_order',@backUpSuffix,' select * from wx_refund_order where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql12_0 FROM @backUpSql12_0;
EXECUTE back_up_sql12_0;
DEALLOCATE PREPARE back_up_sql12_0;

set @backUpSql11_1 = concat('create table wx_refund_order',@mergeSuffix,' like wx_refund_order;');
PREPARE back_up_sql11_1 FROM @backUpSql11_1;
EXECUTE back_up_sql11_1;
DEALLOCATE PREPARE back_up_sql11_1;
set @backUpSql12_1 = concat('insert into wx_refund_order',@mergeSuffix,' select * from wx_refund_order',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql12_1 FROM @backUpSql12_1;
EXECUTE back_up_sql12_1;
DEALLOCATE PREPARE back_up_sql12_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_refund_order表备份、处理数据成功',null);

set @backUpSql13_0 = concat('create table wx_order_group',@backUpSuffix,' like wx_order_group;');
PREPARE back_up_sql13_0 FROM @backUpSql13_0;
EXECUTE back_up_sql13_0;
DEALLOCATE PREPARE back_up_sql13_0;
set @backUpSql14_0 = concat('insert into wx_order_group',@backUpSuffix,' select * from wx_order_group where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql14_0 FROM @backUpSql14_0;
EXECUTE back_up_sql14_0;
DEALLOCATE PREPARE back_up_sql14_0;

set @backUpSql13_1 = concat('create table wx_order_group',@mergeSuffix,' like wx_order_group;');
PREPARE back_up_sql13_1 FROM @backUpSql13_1;
EXECUTE back_up_sql13_1;
DEALLOCATE PREPARE back_up_sql13_1;
set @backUpSql14_1 = concat('insert into wx_order_group',@mergeSuffix,' select * from wx_order_group',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql14_1 FROM @backUpSql14_1;
EXECUTE back_up_sql14_1;
DEALLOCATE PREPARE back_up_sql14_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order_group表备份、处理数据成功',null);

set @backUpSql15_0 = concat('create table wx_order_press',@backUpSuffix,' like wx_order_press;');
PREPARE back_up_sql15_0 FROM @backUpSql15_0;
EXECUTE back_up_sql15_0;
DEALLOCATE PREPARE back_up_sql15_0;
set @backUpSql16_0 = concat('insert into wx_order_press',@backUpSuffix,' select * from wx_order_press where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql16_0 FROM @backUpSql16_0;
EXECUTE back_up_sql16_0;
DEALLOCATE PREPARE back_up_sql16_0;

set @backUpSql15_1 = concat('create table wx_order_press',@mergeSuffix,' like wx_order_press;');
PREPARE back_up_sql15_1 FROM @backUpSql15_1;
EXECUTE back_up_sql15_1;
DEALLOCATE PREPARE back_up_sql15_1;
set @backUpSql16_1 = concat('insert into wx_order_press',@mergeSuffix,' select * from wx_order_press',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql16_1 FROM @backUpSql16_1;
EXECUTE back_up_sql16_1;
DEALLOCATE PREPARE back_up_sql16_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order_press表备份、处理数据成功',null);

set @backUpSql17_0 = concat('create table wx_c_user_from_b',@backUpSuffix,' like wx_c_user_from_b;');
PREPARE back_up_sql17_0 FROM @backUpSql17_0;
EXECUTE back_up_sql17_0;
DEALLOCATE PREPARE back_up_sql17_0;
set @backUpSql18_0 = concat('insert into wx_c_user_from_b',@backUpSuffix,' select * from wx_c_user_from_b where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql18_0 FROM @backUpSql18_0;
EXECUTE back_up_sql18_0;
DEALLOCATE PREPARE back_up_sql18_0;

set @backUpSql17_1 = concat('create table wx_c_user_from_b',@mergeSuffix,' like wx_c_user_from_b;');
PREPARE back_up_sql17_1 FROM @backUpSql17_1;
EXECUTE back_up_sql17_1;
DEALLOCATE PREPARE back_up_sql17_1;
set @backUpSql18_1 = concat('insert into wx_c_user_from_b',@mergeSuffix,' select * from wx_c_user_from_b',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql18_1 FROM @backUpSql18_1;
EXECUTE back_up_sql18_1;
DEALLOCATE PREPARE back_up_sql18_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_from_b表备份、处理数据成功',null);

set @backUpSql19_0 = concat('create table wx_activity_join',@backUpSuffix,' like wx_activity_join;');
PREPARE back_up_sql19_0 FROM @backUpSql19_0;
EXECUTE back_up_sql19_0;
DEALLOCATE PREPARE back_up_sql19_0;
set @backUpSql20_0 = concat('insert into wx_activity_join',@backUpSuffix,' select * from wx_activity_join where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql20_0 FROM @backUpSql20_0;
EXECUTE back_up_sql20_0;
DEALLOCATE PREPARE back_up_sql20_0;

set @backUpSql19_1 = concat('create table wx_activity_join',@mergeSuffix,' like wx_activity_join;');
PREPARE back_up_sql19_1 FROM @backUpSql19_1;
EXECUTE back_up_sql19_1;
DEALLOCATE PREPARE back_up_sql19_1;
set @backUpSql20_1 = concat('insert into wx_activity_join',@mergeSuffix,' select * from wx_activity_join',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql20_1 FROM @backUpSql20_1;
EXECUTE back_up_sql20_1;
DEALLOCATE PREPARE back_up_sql20_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_activity_join表备份、处理数据成功',null);

set @backUpSql21_0 = concat('create table wx_question_log',@backUpSuffix,' like wx_question_log;');
PREPARE back_up_sql21_0 FROM @backUpSql21_0;
EXECUTE back_up_sql21_0;
DEALLOCATE PREPARE back_up_sql21_0;
set @backUpSql22_0 = concat('insert into wx_question_log',@backUpSuffix,' select * from wx_question_log where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql22_0 FROM @backUpSql22_0;
EXECUTE back_up_sql22_0;
DEALLOCATE PREPARE back_up_sql22_0;

set @backUpSql21_1 = concat('create table wx_question_log',@mergeSuffix,' like wx_question_log;');
PREPARE back_up_sql21_1 FROM @backUpSql21_1;
EXECUTE back_up_sql21_1;
DEALLOCATE PREPARE back_up_sql21_1;
set @backUpSql22_1 = concat('insert into wx_question_log',@mergeSuffix,' select * from wx_question_log',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql22_1 FROM @backUpSql22_1;
EXECUTE back_up_sql22_1;
DEALLOCATE PREPARE back_up_sql22_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_question_log表备份、处理数据成功',null);

set @backUpSql23_0 = concat('create table wx_game_action_log',@backUpSuffix,' like wx_game_action_log;');
PREPARE back_up_sql23_0 FROM @backUpSql23_0;
EXECUTE back_up_sql23_0;
DEALLOCATE PREPARE back_up_sql23_0;
set @backUpSql24_0 = concat('insert into wx_game_action_log',@backUpSuffix,' select * from wx_game_action_log where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql24_0 FROM @backUpSql24_0;
EXECUTE back_up_sql24_0;
DEALLOCATE PREPARE back_up_sql24_0;

set @backUpSql23_1 = concat('create table wx_game_action_log',@mergeSuffix,' like wx_game_action_log;');
PREPARE back_up_sql23_1 FROM @backUpSql23_1;
EXECUTE back_up_sql23_1;
DEALLOCATE PREPARE back_up_sql23_1;
set @backUpSql24_1 = concat('insert into wx_game_action_log',@mergeSuffix,' select * from wx_game_action_log',@backUpSuffix,' where user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql24_1 FROM @backUpSql24_1;
EXECUTE back_up_sql24_1;
DEALLOCATE PREPARE back_up_sql24_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_game_action_log表备份、处理数据成功',null);

CREATE TABLE `zz_middle_uu` (
`datestr` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
set @backUpSql25_0 = concat('create table wx_credit_history',@backUpSuffix,' like wx_credit_history;');
PREPARE back_up_sql25_0 FROM @backUpSql25_0;
EXECUTE back_up_sql25_0;
DEALLOCATE PREPARE back_up_sql25_0;
set @backUpSql26_0 = concat('insert into wx_credit_history',@backUpSuffix,' select * from wx_credit_history where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql26_0 FROM @backUpSql26_0;
EXECUTE back_up_sql26_0;
DEALLOCATE PREPARE back_up_sql26_0;

set @backUpSql25_0 = concat('create table wx_credit_history',@mergeSuffix,' like wx_credit_history;');
PREPARE back_up_sql25_0 FROM @backUpSql25_0;
EXECUTE back_up_sql25_0;
DEALLOCATE PREPARE back_up_sql25_0;
set @backUpSql26_0 = concat('insert into wx_credit_history',@mergeSuffix,' select * from wx_credit_history',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,') or operator_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql26_0 FROM @backUpSql26_0;
EXECUTE back_up_sql26_0;
DEALLOCATE PREPARE back_up_sql26_0;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_credit_history表备份、处理数据成功',null);

set @backUpSql27_0 = concat('create table wx_score_history',@backUpSuffix,' like wx_score_history;');
PREPARE back_up_sql27_0 FROM @backUpSql27_0;
EXECUTE back_up_sql27_0;
DEALLOCATE PREPARE back_up_sql27_0;
set @backUpSql28_0 = concat('insert into wx_score_history',@backUpSuffix,' select * from wx_score_history where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql28_0 FROM @backUpSql28_0;
EXECUTE back_up_sql28_0;
DEALLOCATE PREPARE back_up_sql28_0;

set @backUpSql27_1 = concat('create table wx_score_history',@mergeSuffix,' like wx_score_history;');
PREPARE back_up_sql27_1 FROM @backUpSql27_1;
EXECUTE back_up_sql27_1;
DEALLOCATE PREPARE back_up_sql27_1;
set @backUpSql28_1 = concat('insert into wx_score_history',@mergeSuffix,' select * from wx_score_history',@backUpSuffix,' where c_user_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql28_1 FROM @backUpSql28_1;
EXECUTE back_up_sql28_1;
DEALLOCATE PREPARE back_up_sql28_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_score_history表备份、处理数据成功',null);

set @backUpSql29_0 = concat('create table wx_card_spend',@backUpSuffix,' like wx_card_spend;');
PREPARE back_up_sql29_0 FROM @backUpSql29_0;
EXECUTE back_up_sql29_0;
DEALLOCATE PREPARE back_up_sql29_0;
set @backUpSql30_0 = concat('insert into wx_card_spend',@backUpSuffix,' select * from wx_card_spend where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql30_0 FROM @backUpSql30_0;
EXECUTE back_up_sql30_0;
DEALLOCATE PREPARE back_up_sql30_0;

set @backUpSql29_1 = concat('create table wx_card_spend',@mergeSuffix,' like wx_card_spend;');
PREPARE back_up_sql29_1 FROM @backUpSql29_1;
EXECUTE back_up_sql29_1;
DEALLOCATE PREPARE back_up_sql29_1;
set @backUpSql30_1 = concat('insert into wx_card_spend',@mergeSuffix,' select * from wx_card_spend',@backUpSuffix,' where owner_id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql30_1 FROM @backUpSql30_1;
EXECUTE back_up_sql30_1;
DEALLOCATE PREPARE back_up_sql30_1;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_card_spend表备份、处理数据成功',null);

set @backUpSql31_0 = concat('create table wx_c_user_tags',@backUpSuffix,' like wx_c_user_tags;');
PREPARE back_up_sql31_0 FROM @backUpSql31_0;
EXECUTE back_up_sql31_0;
DEALLOCATE PREPARE back_up_sql31_0;
set @backUpSql32_0 = concat('insert into wx_c_user_tags',@backUpSuffix,' select * from wx_c_user_tags where FIND_IN_SET(tenant_id,\'',tenantIds,'\');');
PREPARE back_up_sql32_0 FROM @backUpSql32_0;
EXECUTE back_up_sql32_0;
DEALLOCATE PREPARE back_up_sql32_0;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_tags表备份、处理数据成功','无关键SQL操作');

set @handleSql_00 = concat('CREATE TABLE `wx_c_user_basic_info_middle',@mergeSuffix,'` (
`new_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`old_user_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
@@ -63,72 +354,302 @@ CREATE TABLE `zz_middle_uu` (
`sum_credit` int(11) DEFAULT NULL,
`sum_login_count` int(11) DEFAULT NULL,
UNIQUE INDEX `new_user_id`(`new_user_id`) USING BTREE,
UNIQUE INDEX `old_user_id`(`old_user_id`) USING BTREE,
UNIQUE INDEX `001`(`new_user_id`) USING BTREE,
UNIQUE INDEX `002`(`old_user_id`) USING BTREE,
INDEX `new_user_id_2`(`new_user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
UNIQUE INDEX `old_user_id`(`old_user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;');
PREPARE handle_sql_00 FROM @handleSql_00;
EXECUTE handle_sql_00;
DEALLOCATE PREPARE handle_sql_00;

/*处理手机号重复的数据**/
INSERT INTO zz_middle_uu(phone,tenant_ids,user_ids,sum_poins,sum_credit,sum_login_count) SELECT phone,CONCAT(',',GROUP_CONCAT(final_tenant_id),','),GROUP_CONCAT(id),SUM(poins),SUM(credit),SUM(login_count) FROM wx_c_user_basic_info_1008_1020 GROUP BY phone;
--取第一个作为新的user_id
UPDATE zz_middle_uu SET new_user_id = SUBSTRING_INDEX(user_ids,',',1);
set @handleSql_01 = concat('insert into wx_c_user_basic_info_middle',@mergeSuffix,' (phone,tenant_ids,user_ids,sum_poins,sum_credit,sum_login_count) select phone,CONCAT(\',\',GROUP_CONCAT(final_tenant_id),\',\'),GROUP_CONCAT(id),SUM(poins),SUM(credit),SUM(login_count) from wx_c_user_basic_info',@mergeSuffix,' GROUP BY phone;');
PREPARE handle_sql_01 FROM @handleSql_01;
EXECUTE handle_sql_01;
DEALLOCATE PREPARE handle_sql_01;

UPDATE zz_middle_uu SET old_user_id = SUBSTRING_INDEX(user_ids,CONCAT(new_user_id,','),-1);
set @handleSql_02 = concat('UPDATE wx_c_user_basic_info_middle',@mergeSuffix,' SET new_user_id = SUBSTRING_INDEX(user_ids,\',\',1);');
PREPARE handle_sql_02 FROM @handleSql_02;
EXECUTE handle_sql_02;
DEALLOCATE PREPARE handle_sql_02;

set @handleSql_03 = concat('UPDATE wx_c_user_basic_info_middle',@mergeSuffix,' SET old_user_id = SUBSTRING_INDEX(user_ids,CONCAT(new_user_id,\',\'),-1);');
PREPARE handle_sql_03 FROM @handleSql_03;
EXECUTE handle_sql_03;
DEALLOCATE PREPARE handle_sql_03;

--处理重复手机号数据
UPDATE wx_c_user a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.token = null,a.expire_time=now(),a.user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_activity_join a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_game_action_log a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_order_group a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_order_press a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_question_log a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;
INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_basic_info_middle所有会员重复数据整理成功','无关键SQL操作');

UPDATE wx_c_user_from_b a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_coupon_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_credit_history a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_pay_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_refund_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_score_history a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;
set @handleSql_10 = concat('UPDATE wx_c_user',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id) SET a.token = null,a.expire_time=now(),a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_10 FROM @handleSql_10;
EXECUTE handle_sql_10;
DEALLOCATE PREPARE handle_sql_10;

UPDATE wx_card_spend a LEFT JOIN zz_middle_uu b on a.owner_id=b.old_user_id
SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null;
UPDATE wx_coupon_order a LEFT JOIN zz_middle_uu b on a.owner_id=b.old_user_id
SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null;
set @backUpSql3 = concat('delete from wx_c_user where id in (select id from wx_c_user',@mergeSuffix,');');
PREPARE back_up_sql3 FROM @backUpSql3;
EXECUTE back_up_sql3;
DEALLOCATE PREPARE back_up_sql3;
set @handleSql_11 = concat('insert into wx_c_user select * from wx_c_user',@mergeSuffix,';');
PREPARE handle_sql_11 FROM @handleSql_11;
EXECUTE handle_sql_11;
DEALLOCATE PREPARE handle_sql_11;

UPDATE wx_credit_history a LEFT JOIN zz_middle_uu b on a.operator_id=b.old_user_id
SET a.operator_id = b.new_user_id WHERE b.new_user_id is not null AND a.operator_type in (1,2);
INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user表所有会员重复关联数据处理成功',concat(@backUpSql3,@handleSql_11));

set @handleSql_20 = concat('UPDATE wx_order',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_20 FROM @handleSql_20;
EXECUTE handle_sql_20;
DEALLOCATE PREPARE handle_sql_20;

UPDATE wx_c_user_basic_info a LEFT JOIN zz_middle_uu b on a.id = b.new_user_id
SET a.tenant_id = b.tenant_ids,a.poins = b.sum_poins,a.credit = b.sum_credit,a.login_count = b.sum_login_count
WHERE b.new_user_id is not null;
set @backUpSql5 = concat('delete from wx_order where id in (select id from wx_order',@mergeSuffix,');');
PREPARE back_up_sql5 FROM @backUpSql5;
EXECUTE back_up_sql5;
DEALLOCATE PREPARE back_up_sql5;
set @handleSql_21 = concat('insert into wx_order select * from wx_order',@mergeSuffix,';');
PREPARE handle_sql_21 FROM @handleSql_21;
EXECUTE handle_sql_21;
DEALLOCATE PREPARE handle_sql_21;

UPDATE wx_c_user_basic_info a LEFT JOIN zz_middle_uu b on a.id=b.old_user_id
SET a.phone = concat(a.phone,'_del_',@dateStr),a.`status` = 1 WHERE b.old_user_id is not null;
INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order表所有会员重复关联数据处理成功',concat(@backUpSql5,@handleSql_21));

set @handleSql_30 = concat('UPDATE wx_coupon_order',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_30 FROM @handleSql_30;
EXECUTE handle_sql_30;
DEALLOCATE PREPARE handle_sql_30;
set @handleSql_31 = concat('UPDATE wx_coupon_order',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.owner_id,b.old_user_id)
SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_31 FROM @handleSql_31;
EXECUTE handle_sql_31;
DEALLOCATE PREPARE handle_sql_31;

set @backUpSql7 = concat('delete from wx_coupon_order where id in (select id from wx_coupon_order',@mergeSuffix,');');
PREPARE back_up_sql7 FROM @backUpSql7;
EXECUTE back_up_sql7;
DEALLOCATE PREPARE back_up_sql7;
set @handleSql_32 = concat('insert into wx_coupon_order select * from wx_coupon_order',@mergeSuffix,';');
PREPARE handle_sql_32 FROM @handleSql_32;
EXECUTE handle_sql_32;
DEALLOCATE PREPARE handle_sql_32;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_coupon_order表所有会员重复关联数据处理成功',concat(@backUpSql7,@handleSql_32));

set @handleSql_40 = concat('UPDATE wx_pay_order',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_40 FROM @handleSql_40;
EXECUTE handle_sql_40;
DEALLOCATE PREPARE handle_sql_40;

set @backUpSql9 = concat('delete from wx_pay_order where id in (select id from wx_pay_order',@mergeSuffix,');');
PREPARE back_up_sql9 FROM @backUpSql9;
EXECUTE back_up_sql9;
DEALLOCATE PREPARE back_up_sql9;
set @handleSql_41 = concat('insert into wx_pay_order select * from wx_pay_order',@mergeSuffix,';');
PREPARE handle_sql_41 FROM @handleSql_41;
EXECUTE handle_sql_41;
DEALLOCATE PREPARE handle_sql_41;

--单独处理 wx_c_user_basic_info,wx_c_user_tags 归属集团
UPDATE wx_c_user_basic_info SET final_tenant_id = groupTenantId WHERE FIND_IN_SET(final_tenant_id,tenantIds);
UPDATE wx_c_user_tags SET tenant_id = groupTenantId WHERE FIND_IN_SET(tenant_id,tenantIds);
INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_pay_order表所有会员重复关联数据处理成功',concat(@backUpSql9,@handleSql_41));

set @handleSql_50 = concat('UPDATE wx_refund_order',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_50 FROM @handleSql_50;
EXECUTE handle_sql_50;
DEALLOCATE PREPARE handle_sql_50;

set @backUpSql11 = concat('delete from wx_refund_order where id in (select id from wx_refund_order',@mergeSuffix,');');
PREPARE back_up_sql11 FROM @backUpSql11;
EXECUTE back_up_sql11;
DEALLOCATE PREPARE back_up_sql11;
set @handleSql_51 = concat('insert into wx_refund_order select * from wx_refund_order',@mergeSuffix,';');
PREPARE handle_sql_51 FROM @handleSql_51;
EXECUTE handle_sql_51;
DEALLOCATE PREPARE handle_sql_51;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_refund_order表所有会员重复关联数据处理成功',concat(@backUpSql11,@handleSql_51));

set @handleSql_60 = concat('UPDATE wx_order_group',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id)
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_60 FROM @handleSql_60;
EXECUTE handle_sql_60;
DEALLOCATE PREPARE handle_sql_60;

set @backUpSql13 = concat('delete from wx_order_group where id in (select id from wx_order_group',@mergeSuffix,');');
PREPARE back_up_sql13 FROM @backUpSql13;
EXECUTE back_up_sql13;
DEALLOCATE PREPARE back_up_sql13;
set @handleSql_61 = concat('insert into wx_order_group select * from wx_order_group',@mergeSuffix,';');
PREPARE handle_sql_61 FROM @handleSql_61;
EXECUTE handle_sql_61;
DEALLOCATE PREPARE handle_sql_61;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order_group表所有会员重复关联数据处理成功',concat(@backUpSql13,@handleSql_61));

set @handleSql_70 = concat('UPDATE wx_order_press',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id)
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_70 FROM @handleSql_70;
EXECUTE handle_sql_70;
DEALLOCATE PREPARE handle_sql_70;

set @backUpSql15 = concat('delete from wx_order_press where id in (select id from wx_order_press',@mergeSuffix,');');
PREPARE back_up_sql15 FROM @backUpSql15;
EXECUTE back_up_sql15;
DEALLOCATE PREPARE back_up_sql15;
set @handleSql_71 = concat('insert into wx_order_press select * from wx_order_press',@mergeSuffix,';');
PREPARE handle_sql_71 FROM @handleSql_71;
EXECUTE handle_sql_71;
DEALLOCATE PREPARE handle_sql_71;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_order_press表所有会员重复关联数据处理成功',concat(@backUpSql15,@handleSql_71));

set @handleSql_80 = concat('UPDATE wx_c_user_from_b',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_80 FROM @handleSql_80;
EXECUTE handle_sql_80;
DEALLOCATE PREPARE handle_sql_80;

set @backUpSql17 = concat('delete from wx_c_user_from_b where id in (select id from wx_c_user_from_b',@mergeSuffix,');');
PREPARE back_up_sql17 FROM @backUpSql17;
EXECUTE back_up_sql17;
DEALLOCATE PREPARE back_up_sql17;
set @handleSql_81 = concat('insert into wx_c_user_from_b select * from wx_c_user_from_b',@mergeSuffix,';');
PREPARE handle_sql_81 FROM @handleSql_81;
EXECUTE handle_sql_81;
DEALLOCATE PREPARE handle_sql_81;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_from_b表所有会员重复关联数据处理成功',concat(@backUpSql17,@handleSql_81));

set @handleSql_90 = concat('UPDATE wx_activity_join',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id)
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_90 FROM @handleSql_90;
EXECUTE handle_sql_90;
DEALLOCATE PREPARE handle_sql_90;

set @backUpSql19 = concat('delete from wx_activity_join where id in (select id from wx_activity_join',@mergeSuffix,');');
PREPARE back_up_sql19 FROM @backUpSql19;
EXECUTE back_up_sql19;
DEALLOCATE PREPARE back_up_sql19;
set @handleSql_91 = concat('insert into wx_activity_join select * from wx_activity_join',@mergeSuffix,';');
PREPARE handle_sql_91 FROM @handleSql_91;
EXECUTE handle_sql_91;
DEALLOCATE PREPARE handle_sql_91;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_activity_join表所有会员重复关联数据处理成功',concat(@backUpSql19,@handleSql_91));

set @handleSql_100 = concat('UPDATE wx_question_log',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id)
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_100 FROM @handleSql_100;
EXECUTE handle_sql_100;
DEALLOCATE PREPARE handle_sql_100;

set @backUpSql21 = concat('delete from wx_question_log where id in (select id from wx_question_log',@mergeSuffix,');');
PREPARE back_up_sql21 FROM @backUpSql21;
EXECUTE back_up_sql21;
DEALLOCATE PREPARE back_up_sql21;
set @handleSql_101 = concat('insert into wx_question_log select * from wx_question_log',@mergeSuffix,';');
PREPARE handle_sql_101 FROM @handleSql_101;
EXECUTE handle_sql_101;
DEALLOCATE PREPARE handle_sql_101;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_question_log表所有会员重复关联数据处理成功',concat(@backUpSql21,@handleSql_101));

set @handleSql_110 = concat('UPDATE wx_game_action_log',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.user_id,b.old_user_id)
SET a.user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_110 FROM @handleSql_110;
EXECUTE handle_sql_110;
DEALLOCATE PREPARE handle_sql_110;

set @backUpSql23 = concat('delete from wx_game_action_log where id in (select id from wx_game_action_log',@mergeSuffix,');');
PREPARE back_up_sql23 FROM @backUpSql23;
EXECUTE back_up_sql23;
DEALLOCATE PREPARE back_up_sql23;
set @handleSql_111 = concat('insert into wx_game_action_log select * from wx_game_action_log',@mergeSuffix,';');
PREPARE handle_sql_111 FROM @handleSql_111;
EXECUTE handle_sql_111;
DEALLOCATE PREPARE handle_sql_111;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_game_action_log表所有会员重复关联数据处理成功',concat(@backUpSql23,@handleSql_111));

set @handleSql_120 = concat('UPDATE wx_credit_history',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_120 FROM @handleSql_120;
EXECUTE handle_sql_120;
DEALLOCATE PREPARE handle_sql_120;
set @handleSql_121 = concat('UPDATE wx_credit_history',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.operator_id,b.old_user_id)
SET a.operator_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_121 FROM @handleSql_121;
EXECUTE handle_sql_121;
DEALLOCATE PREPARE handle_sql_121;

set @backUpSql25 = concat('delete from wx_credit_history where id in (select id from wx_credit_history',@mergeSuffix,');');
PREPARE back_up_sql25 FROM @backUpSql25;
EXECUTE back_up_sql25;
DEALLOCATE PREPARE back_up_sql25;
set @handleSql_122 = concat('insert into wx_credit_history select * from wx_credit_history',@mergeSuffix,';');
PREPARE handle_sql_122 FROM @handleSql_122;
EXECUTE handle_sql_122;
DEALLOCATE PREPARE handle_sql_122;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_credit_history表所有会员重复关联数据处理成功',concat(@backUpSql25,@handleSql_122));

set @handleSql_130 = concat('UPDATE wx_score_history',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.c_user_id,b.old_user_id)
SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_130 FROM @handleSql_130;
EXECUTE handle_sql_130;
DEALLOCATE PREPARE handle_sql_130;

set @backUpSql27 = concat('delete from wx_score_history where id in (select id from wx_score_history',@mergeSuffix,');');
PREPARE back_up_sql27 FROM @backUpSql27;
EXECUTE back_up_sql27;
DEALLOCATE PREPARE back_up_sql27;
set @handleSql_131 = concat('insert into wx_score_history select * from wx_score_history',@mergeSuffix,';');
PREPARE handle_sql_131 FROM @handleSql_131;
EXECUTE handle_sql_131;
DEALLOCATE PREPARE handle_sql_131;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_score_history表所有会员重复关联数据处理成功',concat(@backUpSql27,@handleSql_131));

set @handleSql_140 = concat('UPDATE wx_card_spend',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.owner_id,b.old_user_id)
SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null;');
PREPARE handle_sql_140 FROM @handleSql_140;
EXECUTE handle_sql_140;
DEALLOCATE PREPARE handle_sql_140;

set @backUpSql29 = concat('delete from wx_card_spend where id in (select id from wx_card_spend',@mergeSuffix,');');
PREPARE back_up_sql29 FROM @backUpSql29;
EXECUTE back_up_sql29;
DEALLOCATE PREPARE back_up_sql29;
set @handleSql_141 = concat('insert into wx_card_spend select * from wx_card_spend',@mergeSuffix,';');
PREPARE handle_sql_141 FROM @handleSql_141;
EXECUTE handle_sql_141;
DEALLOCATE PREPARE handle_sql_141;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_card_spend表所有会员重复关联数据处理成功',concat(@backUpSql29,@handleSql_141));

set @handleSql_150 = concat('UPDATE wx_c_user_basic_info',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on a.id = b.new_user_id SET a.tenant_id = b.tenant_ids,a.poins = b.sum_poins,a.credit = b.sum_credit,a.login_count = b.sum_login_count WHERE b.new_user_id is not null;');
PREPARE handle_sql_150 FROM @handleSql_150;
EXECUTE handle_sql_150;
DEALLOCATE PREPARE handle_sql_150;
set @handleSql_151 = concat('UPDATE wx_c_user_basic_info',@mergeSuffix,' a LEFT JOIN wx_c_user_basic_info_middle',@mergeSuffix,' b on FIND_IN_SET(a.id,b.old_user_id) SET a.phone = concat(a.phone,\'_del_\',date_format(now(),\'%Y%m%d%H%m%s\')),a.`status` = 1 WHERE b.old_user_id is not null;');
PREPARE handle_sql_151 FROM @handleSql_151;
EXECUTE handle_sql_151;
DEALLOCATE PREPARE handle_sql_151;

set @backUpSql1 = concat('delete from wx_c_user_basic_info where id in (select id from wx_c_user_basic_info',@mergeSuffix,');');
PREPARE back_up_sql1 FROM @backUpSql1;
EXECUTE back_up_sql1;
DEALLOCATE PREPARE back_up_sql1;
set @handleSql_152 = concat('insert into wx_c_user_basic_info select * from wx_c_user_basic_info',@mergeSuffix,';');
PREPARE handle_sql_152 FROM @handleSql_152;
EXECUTE handle_sql_152;
DEALLOCATE PREPARE handle_sql_152;

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_basic_info表所有会员重复关联数据处理成功',concat(@backUpSql1,@handleSql_152));

UPDATE wx_c_user_basic_info SET final_tenant_id = groupTenantId WHERE FIND_IN_SET(final_tenant_id,tenantIds);
UPDATE wx_c_user_tags SET tenant_id = groupTenantId WHERE FIND_IN_SET(tenant_id,tenantIds);

INSERT into zz_process_log VALUES(NOW(),'back_up()','wx_c_user_basic_info表会员归属集团修改成功',concat('UPDATE wx_c_user_basic_info SET final_tenant_id = ',groupTenantId,' WHERE FIND_IN_SET(final_tenant_id,',tenantIds,');'));

SELECT * from zz_process_log;

END


+ 1
- 0
mallinkAdmin/src/main/resources/tessdata/configs/api_config Просмотреть файл

@@ -0,0 +1 @@
tessedit_zero_rejection T

+ 1
- 0
mallinkAdmin/src/main/resources/tessdata/configs/digits Просмотреть файл

@@ -0,0 +1 @@
tessedit_char_whitelist 0123456789-.

+ 1
- 0
mallinkAdmin/src/main/resources/tessdata/configs/hocr Просмотреть файл

@@ -0,0 +1 @@
tessedit_create_hocr 1

Двоичные данные
mallinkAdmin/src/main/resources/tessdata/eng.traineddata Просмотреть файл


Двоичные данные
mallinkAdmin/src/main/resources/tessdata/osd.traineddata Просмотреть файл


Двоичные данные
mallinkAdmin/src/main/resources/tessdata/pdf.ttf Просмотреть файл


+ 793
- 0
mallinkAdmin/src/main/resources/tessdata/pdf.ttx Просмотреть файл

@@ -0,0 +1,793 @@
<?xml version="1.0" encoding="utf-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.4">

<GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
<GlyphID id="0" name=".notdef"/>
<GlyphID id="1" name="glyph00001"/>
<GlyphID id="2" name="glyph00002"/>
<GlyphID id="3" name="glyph00003"/>
<GlyphID id="4" name="glyph00004"/>
<GlyphID id="5" name="glyph00005"/>
<GlyphID id="6" name="glyph00006"/>
<GlyphID id="7" name="glyph00007"/>
<GlyphID id="8" name="glyph00008"/>
<GlyphID id="9" name="glyph00009"/>
<GlyphID id="10" name="glyph00010"/>
<GlyphID id="11" name="glyph00011"/>
<GlyphID id="12" name="glyph00012"/>
<GlyphID id="13" name="glyph00013"/>
<GlyphID id="14" name="glyph00014"/>
<GlyphID id="15" name="glyph00015"/>
<GlyphID id="16" name="glyph00016"/>
<GlyphID id="17" name="glyph00017"/>
<GlyphID id="18" name="glyph00018"/>
<GlyphID id="19" name="glyph00019"/>
<GlyphID id="20" name="glyph00020"/>
<GlyphID id="21" name="glyph00021"/>
<GlyphID id="22" name="glyph00022"/>
<GlyphID id="23" name="glyph00023"/>
<GlyphID id="24" name="glyph00024"/>
<GlyphID id="25" name="glyph00025"/>
<GlyphID id="26" name="glyph00026"/>
<GlyphID id="27" name="glyph00027"/>
<GlyphID id="28" name="glyph00028"/>
<GlyphID id="29" name="glyph00029"/>
<GlyphID id="30" name="glyph00030"/>
<GlyphID id="31" name="glyph00031"/>
<GlyphID id="32" name="glyph00032"/>
<GlyphID id="33" name="glyph00033"/>
<GlyphID id="34" name="glyph00034"/>
<GlyphID id="35" name="glyph00035"/>
<GlyphID id="36" name="glyph00036"/>
<GlyphID id="37" name="glyph00037"/>
<GlyphID id="38" name="glyph00038"/>
<GlyphID id="39" name="glyph00039"/>
<GlyphID id="40" name="glyph00040"/>
<GlyphID id="41" name="glyph00041"/>
<GlyphID id="42" name="glyph00042"/>
<GlyphID id="43" name="glyph00043"/>
<GlyphID id="44" name="glyph00044"/>
<GlyphID id="45" name="glyph00045"/>
<GlyphID id="46" name="glyph00046"/>
<GlyphID id="47" name="glyph00047"/>
<GlyphID id="48" name="glyph00048"/>
<GlyphID id="49" name="glyph00049"/>
<GlyphID id="50" name="glyph00050"/>
<GlyphID id="51" name="glyph00051"/>
<GlyphID id="52" name="glyph00052"/>
<GlyphID id="53" name="glyph00053"/>
<GlyphID id="54" name="glyph00054"/>
<GlyphID id="55" name="glyph00055"/>
<GlyphID id="56" name="glyph00056"/>
<GlyphID id="57" name="glyph00057"/>
<GlyphID id="58" name="glyph00058"/>
<GlyphID id="59" name="glyph00059"/>
<GlyphID id="60" name="glyph00060"/>
<GlyphID id="61" name="glyph00061"/>
<GlyphID id="62" name="glyph00062"/>
<GlyphID id="63" name="glyph00063"/>
<GlyphID id="64" name="glyph00064"/>
<GlyphID id="65" name="glyph00065"/>
<GlyphID id="66" name="glyph00066"/>
<GlyphID id="67" name="glyph00067"/>
<GlyphID id="68" name="glyph00068"/>
<GlyphID id="69" name="glyph00069"/>
<GlyphID id="70" name="glyph00070"/>
<GlyphID id="71" name="glyph00071"/>
<GlyphID id="72" name="glyph00072"/>
<GlyphID id="73" name="glyph00073"/>
<GlyphID id="74" name="glyph00074"/>
<GlyphID id="75" name="glyph00075"/>
<GlyphID id="76" name="glyph00076"/>
<GlyphID id="77" name="glyph00077"/>
<GlyphID id="78" name="glyph00078"/>
<GlyphID id="79" name="glyph00079"/>
<GlyphID id="80" name="glyph00080"/>
<GlyphID id="81" name="glyph00081"/>
<GlyphID id="82" name="glyph00082"/>
<GlyphID id="83" name="glyph00083"/>
<GlyphID id="84" name="glyph00084"/>
<GlyphID id="85" name="glyph00085"/>
<GlyphID id="86" name="glyph00086"/>
<GlyphID id="87" name="glyph00087"/>
<GlyphID id="88" name="glyph00088"/>
<GlyphID id="89" name="glyph00089"/>
<GlyphID id="90" name="glyph00090"/>
<GlyphID id="91" name="glyph00091"/>
<GlyphID id="92" name="glyph00092"/>
<GlyphID id="93" name="glyph00093"/>
<GlyphID id="94" name="glyph00094"/>
<GlyphID id="95" name="glyph00095"/>
<GlyphID id="96" name="glyph00096"/>
<GlyphID id="97" name="glyph00097"/>
<GlyphID id="98" name="glyph00098"/>
<GlyphID id="99" name="glyph00099"/>
<GlyphID id="100" name="glyph00100"/>
<GlyphID id="101" name="glyph00101"/>
<GlyphID id="102" name="glyph00102"/>
<GlyphID id="103" name="glyph00103"/>
<GlyphID id="104" name="glyph00104"/>
<GlyphID id="105" name="glyph00105"/>
<GlyphID id="106" name="glyph00106"/>
<GlyphID id="107" name="glyph00107"/>
<GlyphID id="108" name="glyph00108"/>
<GlyphID id="109" name="glyph00109"/>
<GlyphID id="110" name="glyph00110"/>
<GlyphID id="111" name="glyph00111"/>
<GlyphID id="112" name="glyph00112"/>
<GlyphID id="113" name="glyph00113"/>
<GlyphID id="114" name="glyph00114"/>
<GlyphID id="115" name="glyph00115"/>
<GlyphID id="116" name="glyph00116"/>
</GlyphOrder>

<head>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="1.0"/>
<fontRevision value="2.31999206543"/>
<checkSumAdjustment value="0xd4fdc458"/>
<magicNumber value="0x5f0f3cf5"/>
<flags value="00000000 00011111"/>
<unitsPerEm value="2048"/>
<created value="Fri Sep 10 06:45:17 2010"/>
<modified value="Fri Sep 10 06:45:17 2010"/>
<xMin value="0"/>
<yMin value="0"/>
<xMax value="1000"/>
<yMax value="1000"/>
<macStyle value="00000000 00000000"/>
<lowestRecPPEM value="8"/>
<fontDirectionHint value="0"/>
<indexToLocFormat value="1"/>
<glyphDataFormat value="0"/>
</head>

<hhea>
<tableVersion value="1.0"/>
<ascent value="1000"/>
<descent value="0"/>
<lineGap value="0"/>
<advanceWidthMax value="3554"/>
<minLeftSideBearing value="-2090"/>
<minRightSideBearing value="-1455"/>
<xMaxExtent value="3442"/>
<caretSlopeRise value="1"/>
<caretSlopeRun value="0"/>
<caretOffset value="0"/>
<reserved0 value="0"/>
<reserved1 value="0"/>
<reserved2 value="0"/>
<reserved3 value="0"/>
<metricDataFormat value="0"/>
<numberOfHMetrics value="117"/>
</hhea>

<maxp>
<!-- Most of this table will be recalculated by the compiler -->
<tableVersion value="0x10000"/>
<numGlyphs value="117"/>
<maxPoints value="852"/>
<maxContours value="43"/>
<maxCompositePoints value="104"/>
<maxCompositeContours value="12"/>
<maxZones value="2"/>
<maxTwilightPoints value="16"/>
<maxStorage value="153"/>
<maxFunctionDefs value="8"/>
<maxInstructionDefs value="0"/>
<maxStackElements value="1045"/>
<maxSizeOfInstructions value="534"/>
<maxComponentElements value="8"/>
<maxComponentDepth value="4"/>
</maxp>

<hmtx>
<mtx name=".notdef" width="1000" lsb="0"/>
<mtx name="glyph00001" width="1000" lsb="0"/>
<mtx name="glyph00002" width="1000" lsb="0"/>
<mtx name="glyph00003" width="1000" lsb="0"/>
<mtx name="glyph00004" width="1000" lsb="0"/>
<mtx name="glyph00005" width="1000" lsb="0"/>
<mtx name="glyph00006" width="1000" lsb="0"/>
<mtx name="glyph00007" width="1000" lsb="0"/>
<mtx name="glyph00008" width="1000" lsb="0"/>
<mtx name="glyph00009" width="1000" lsb="0"/>
<mtx name="glyph00010" width="1000" lsb="0"/>
<mtx name="glyph00011" width="1000" lsb="0"/>
<mtx name="glyph00012" width="1000" lsb="0"/>
<mtx name="glyph00013" width="1000" lsb="0"/>
<mtx name="glyph00014" width="1000" lsb="0"/>
<mtx name="glyph00015" width="1000" lsb="0"/>
<mtx name="glyph00016" width="1000" lsb="0"/>
<mtx name="glyph00017" width="1000" lsb="0"/>
<mtx name="glyph00018" width="1000" lsb="0"/>
<mtx name="glyph00019" width="1000" lsb="0"/>
<mtx name="glyph00020" width="1000" lsb="0"/>
<mtx name="glyph00021" width="1000" lsb="0"/>
<mtx name="glyph00022" width="1000" lsb="0"/>
<mtx name="glyph00023" width="1000" lsb="0"/>
<mtx name="glyph00024" width="1000" lsb="0"/>
<mtx name="glyph00025" width="1000" lsb="0"/>
<mtx name="glyph00026" width="1000" lsb="0"/>
<mtx name="glyph00027" width="1000" lsb="0"/>
<mtx name="glyph00028" width="1000" lsb="0"/>
<mtx name="glyph00029" width="1000" lsb="0"/>
<mtx name="glyph00030" width="1000" lsb="0"/>
<mtx name="glyph00031" width="1000" lsb="0"/>
<mtx name="glyph00032" width="1000" lsb="0"/>
<mtx name="glyph00033" width="1000" lsb="0"/>
<mtx name="glyph00034" width="1000" lsb="0"/>
<mtx name="glyph00035" width="1000" lsb="0"/>
<mtx name="glyph00036" width="1000" lsb="0"/>
<mtx name="glyph00037" width="1000" lsb="0"/>
<mtx name="glyph00038" width="1000" lsb="0"/>
<mtx name="glyph00039" width="1000" lsb="0"/>
<mtx name="glyph00040" width="1000" lsb="0"/>
<mtx name="glyph00041" width="1000" lsb="0"/>
<mtx name="glyph00042" width="1000" lsb="0"/>
<mtx name="glyph00043" width="1000" lsb="0"/>
<mtx name="glyph00044" width="1000" lsb="0"/>
<mtx name="glyph00045" width="1000" lsb="0"/>
<mtx name="glyph00046" width="1000" lsb="0"/>
<mtx name="glyph00047" width="1000" lsb="0"/>
<mtx name="glyph00048" width="1000" lsb="0"/>
<mtx name="glyph00049" width="1000" lsb="0"/>
<mtx name="glyph00050" width="1000" lsb="0"/>
<mtx name="glyph00051" width="1000" lsb="0"/>
<mtx name="glyph00052" width="1000" lsb="0"/>
<mtx name="glyph00053" width="1000" lsb="0"/>
<mtx name="glyph00054" width="1000" lsb="0"/>
<mtx name="glyph00055" width="1000" lsb="0"/>
<mtx name="glyph00056" width="1000" lsb="0"/>
<mtx name="glyph00057" width="1000" lsb="0"/>
<mtx name="glyph00058" width="1000" lsb="0"/>
<mtx name="glyph00059" width="1000" lsb="0"/>
<mtx name="glyph00060" width="1000" lsb="0"/>
<mtx name="glyph00061" width="1000" lsb="0"/>
<mtx name="glyph00062" width="1000" lsb="0"/>
<mtx name="glyph00063" width="1000" lsb="0"/>
<mtx name="glyph00064" width="1000" lsb="0"/>
<mtx name="glyph00065" width="1000" lsb="0"/>
<mtx name="glyph00066" width="1000" lsb="0"/>
<mtx name="glyph00067" width="1000" lsb="0"/>
<mtx name="glyph00068" width="1000" lsb="0"/>
<mtx name="glyph00069" width="1000" lsb="0"/>
<mtx name="glyph00070" width="1000" lsb="0"/>
<mtx name="glyph00071" width="1000" lsb="0"/>
<mtx name="glyph00072" width="1000" lsb="0"/>
<mtx name="glyph00073" width="1000" lsb="0"/>
<mtx name="glyph00074" width="1000" lsb="0"/>
<mtx name="glyph00075" width="1000" lsb="0"/>
<mtx name="glyph00076" width="1000" lsb="0"/>
<mtx name="glyph00077" width="1000" lsb="0"/>
<mtx name="glyph00078" width="1000" lsb="0"/>
<mtx name="glyph00079" width="1000" lsb="0"/>
<mtx name="glyph00080" width="1000" lsb="0"/>
<mtx name="glyph00081" width="1000" lsb="0"/>
<mtx name="glyph00082" width="1000" lsb="0"/>
<mtx name="glyph00083" width="1000" lsb="0"/>
<mtx name="glyph00084" width="1000" lsb="0"/>
<mtx name="glyph00085" width="1000" lsb="0"/>
<mtx name="glyph00086" width="1000" lsb="0"/>
<mtx name="glyph00087" width="1000" lsb="0"/>
<mtx name="glyph00088" width="1000" lsb="0"/>
<mtx name="glyph00089" width="1000" lsb="0"/>
<mtx name="glyph00090" width="1000" lsb="0"/>
<mtx name="glyph00091" width="1000" lsb="0"/>
<mtx name="glyph00092" width="1000" lsb="0"/>
<mtx name="glyph00093" width="1000" lsb="0"/>
<mtx name="glyph00094" width="1000" lsb="0"/>
<mtx name="glyph00095" width="1000" lsb="0"/>
<mtx name="glyph00096" width="1000" lsb="0"/>
<mtx name="glyph00097" width="1000" lsb="0"/>
<mtx name="glyph00098" width="1000" lsb="0"/>
<mtx name="glyph00099" width="1000" lsb="0"/>
<mtx name="glyph00100" width="1000" lsb="0"/>
<mtx name="glyph00101" width="1000" lsb="0"/>
<mtx name="glyph00102" width="1000" lsb="0"/>
<mtx name="glyph00103" width="1000" lsb="0"/>
<mtx name="glyph00104" width="1000" lsb="0"/>
<mtx name="glyph00105" width="1000" lsb="0"/>
<mtx name="glyph00106" width="1000" lsb="0"/>
<mtx name="glyph00107" width="1000" lsb="0"/>
<mtx name="glyph00108" width="1000" lsb="0"/>
<mtx name="glyph00109" width="1000" lsb="0"/>
<mtx name="glyph00110" width="1000" lsb="0"/>
<mtx name="glyph00111" width="1000" lsb="0"/>
<mtx name="glyph00112" width="1000" lsb="0"/>
<mtx name="glyph00113" width="1000" lsb="0"/>
<mtx name="glyph00114" width="1000" lsb="0"/>
<mtx name="glyph00115" width="1000" lsb="0"/>
<mtx name="glyph00116" width="1000" lsb="0"/>
</hmtx>

<cmap>
<tableVersion version="0"/>
<cmap_format_4 platformID="3" platEncID="0" language="0">
<map code="0xf000" name=".notdef"/>
<map code="0xf001" name="glyph00001"/>
<map code="0xf002" name="glyph00002"/>
<map code="0xf003" name="glyph00003"/>
<map code="0xf004" name="glyph00004"/>
<map code="0xf005" name="glyph00005"/>
<map code="0xf006" name="glyph00006"/>
<map code="0xf007" name="glyph00007"/>
<map code="0xf008" name="glyph00008"/>
<map code="0xf009" name="glyph00009"/>
<map code="0xf00a" name="glyph00010"/>
<map code="0xf00b" name="glyph00011"/>
<map code="0xf00c" name="glyph00012"/>
<map code="0xf00d" name="glyph00013"/>
<map code="0xf00e" name="glyph00014"/>
<map code="0xf00f" name="glyph00015"/>
<map code="0xf010" name="glyph00016"/>
<map code="0xf011" name="glyph00017"/>
<map code="0xf012" name="glyph00018"/>
<map code="0xf013" name="glyph00019"/>
<map code="0xf014" name="glyph00020"/>
<map code="0xf015" name="glyph00021"/>
<map code="0xf016" name="glyph00022"/>
<map code="0xf017" name="glyph00023"/>
<map code="0xf018" name="glyph00024"/>
<map code="0xf019" name="glyph00025"/>
<map code="0xf01a" name="glyph00026"/>
<map code="0xf01b" name="glyph00027"/>
<map code="0xf01c" name="glyph00028"/>
<map code="0xf01d" name="glyph00029"/>
<map code="0xf01e" name="glyph00030"/>
<map code="0xf01f" name="glyph00031"/>
<map code="0xf020" name="glyph00032"/>
<map code="0xf021" name="glyph00033"/>
<map code="0xf022" name="glyph00034"/>
<map code="0xf023" name="glyph00035"/>
<map code="0xf024" name="glyph00036"/>
<map code="0xf025" name="glyph00037"/>
<map code="0xf026" name="glyph00038"/>
<map code="0xf027" name="glyph00039"/>
<map code="0xf028" name="glyph00040"/>
<map code="0xf029" name="glyph00041"/>
<map code="0xf02a" name="glyph00042"/>
<map code="0xf02b" name="glyph00043"/>
<map code="0xf02c" name="glyph00044"/>
<map code="0xf02d" name="glyph00045"/>
<map code="0xf02e" name="glyph00046"/>
<map code="0xf02f" name="glyph00047"/>
<map code="0xf030" name="glyph00048"/>
<map code="0xf031" name="glyph00049"/>
<map code="0xf032" name="glyph00050"/>
<map code="0xf033" name="glyph00051"/>
<map code="0xf034" name="glyph00052"/>
<map code="0xf035" name="glyph00053"/>
<map code="0xf036" name="glyph00054"/>
<map code="0xf037" name="glyph00055"/>
<map code="0xf038" name="glyph00056"/>
<map code="0xf039" name="glyph00057"/>
<map code="0xf03a" name="glyph00058"/>
<map code="0xf03b" name="glyph00059"/>
<map code="0xf03c" name="glyph00060"/>
<map code="0xf03d" name="glyph00061"/>
<map code="0xf03e" name="glyph00062"/>
<map code="0xf03f" name="glyph00063"/>
<map code="0xf040" name="glyph00064"/>
<map code="0xf041" name="glyph00065"/>
<map code="0xf042" name="glyph00066"/>
<map code="0xf043" name="glyph00067"/>
<map code="0xf044" name="glyph00068"/>
<map code="0xf045" name="glyph00069"/>
<map code="0xf046" name="glyph00070"/>
<map code="0xf047" name="glyph00071"/>
<map code="0xf048" name="glyph00072"/>
<map code="0xf049" name="glyph00073"/>
<map code="0xf04a" name="glyph00074"/>
<map code="0xf04b" name="glyph00075"/>
<map code="0xf04c" name="glyph00076"/>
<map code="0xf04d" name="glyph00077"/>
<map code="0xf04e" name="glyph00078"/>
<map code="0xf04f" name="glyph00079"/>
<map code="0xf050" name="glyph00080"/>
<map code="0xf051" name="glyph00081"/>
<map code="0xf052" name="glyph00082"/>
<map code="0xf053" name="glyph00083"/>
<map code="0xf054" name="glyph00084"/>
<map code="0xf055" name="glyph00085"/>
<map code="0xf056" name="glyph00086"/>
<map code="0xf057" name="glyph00087"/>
<map code="0xf058" name="glyph00088"/>
<map code="0xf059" name="glyph00089"/>
<map code="0xf05a" name="glyph00090"/>
<map code="0xf05b" name="glyph00091"/>
<map code="0xf05c" name="glyph00092"/>
<map code="0xf05d" name="glyph00093"/>
<map code="0xf05e" name="glyph00094"/>
<map code="0xf05f" name="glyph00095"/>
<map code="0xf060" name="glyph00096"/>
<map code="0xf061" name="glyph00097"/>
<map code="0xf062" name="glyph00098"/>
<map code="0xf063" name="glyph00099"/>
<map code="0xf064" name="glyph00100"/>
<map code="0xf065" name="glyph00101"/>
<map code="0xf066" name="glyph00102"/>
<map code="0xf067" name="glyph00103"/>
<map code="0xf068" name="glyph00104"/>
<map code="0xf069" name="glyph00105"/>
<map code="0xf06a" name="glyph00106"/>
<map code="0xf06b" name="glyph00107"/>
<map code="0xf06c" name="glyph00108"/>
<map code="0xf06d" name="glyph00109"/>
<map code="0xf06e" name="glyph00110"/>
<map code="0xf06f" name="glyph00111"/>
<map code="0xf070" name="glyph00112"/>
<map code="0xf071" name="glyph00113"/>
<map code="0xf072" name="glyph00114"/>
<map code="0xf073" name="glyph00115"/>
<map code="0xf074" name="glyph00116"/>
</cmap_format_4>
<cmap_format_6 platformID="1" platEncID="0" language="0">
<map code="0x0" name=".notdef"/>
<map code="0x1" name="glyph00001"/>
<map code="0x2" name="glyph00002"/>
<map code="0x3" name="glyph00003"/>
<map code="0x4" name="glyph00004"/>
<map code="0x5" name="glyph00005"/>
<map code="0x6" name="glyph00006"/>
<map code="0x7" name="glyph00007"/>
<map code="0x8" name="glyph00008"/>
<map code="0x9" name="glyph00009"/>
<map code="0xa" name="glyph00010"/>
<map code="0xb" name="glyph00011"/>
<map code="0xc" name="glyph00012"/>
<map code="0xd" name="glyph00013"/>
<map code="0xe" name="glyph00014"/>
<map code="0xf" name="glyph00015"/>
<map code="0x10" name="glyph00016"/>
<map code="0x11" name="glyph00017"/>
<map code="0x12" name="glyph00018"/>
<map code="0x13" name="glyph00019"/>
<map code="0x14" name="glyph00020"/>
<map code="0x15" name="glyph00021"/>
<map code="0x16" name="glyph00022"/>
<map code="0x17" name="glyph00023"/>
<map code="0x18" name="glyph00024"/>
<map code="0x19" name="glyph00025"/>
<map code="0x1a" name="glyph00026"/>
<map code="0x1b" name="glyph00027"/>
<map code="0x1c" name="glyph00028"/>
<map code="0x1d" name="glyph00029"/>
<map code="0x1e" name="glyph00030"/>
<map code="0x1f" name="glyph00031"/>
<map code="0x20" name="glyph00032"/>
<map code="0x21" name="glyph00033"/>
<map code="0x22" name="glyph00034"/>
<map code="0x23" name="glyph00035"/>
<map code="0x24" name="glyph00036"/>
<map code="0x25" name="glyph00037"/>
<map code="0x26" name="glyph00038"/>
<map code="0x27" name="glyph00039"/>
<map code="0x28" name="glyph00040"/>
<map code="0x29" name="glyph00041"/>
<map code="0x2a" name="glyph00042"/>
<map code="0x2b" name="glyph00043"/>
<map code="0x2c" name="glyph00044"/>
<map code="0x2d" name="glyph00045"/>
<map code="0x2e" name="glyph00046"/>
<map code="0x2f" name="glyph00047"/>
<map code="0x30" name="glyph00048"/>
<map code="0x31" name="glyph00049"/>
<map code="0x32" name="glyph00050"/>
<map code="0x33" name="glyph00051"/>
<map code="0x34" name="glyph00052"/>
<map code="0x35" name="glyph00053"/>
<map code="0x36" name="glyph00054"/>
<map code="0x37" name="glyph00055"/>
<map code="0x38" name="glyph00056"/>
<map code="0x39" name="glyph00057"/>
<map code="0x3a" name="glyph00058"/>
<map code="0x3b" name="glyph00059"/>
<map code="0x3c" name="glyph00060"/>
<map code="0x3d" name="glyph00061"/>
<map code="0x3e" name="glyph00062"/>
<map code="0x3f" name="glyph00063"/>
<map code="0x40" name="glyph00064"/>
<map code="0x41" name="glyph00065"/>
<map code="0x42" name="glyph00066"/>
<map code="0x43" name="glyph00067"/>
<map code="0x44" name="glyph00068"/>
<map code="0x45" name="glyph00069"/>
<map code="0x46" name="glyph00070"/>
<map code="0x47" name="glyph00071"/>
<map code="0x48" name="glyph00072"/>
<map code="0x49" name="glyph00073"/>
<map code="0x4a" name="glyph00074"/>
<map code="0x4b" name="glyph00075"/>
<map code="0x4c" name="glyph00076"/>
<map code="0x4d" name="glyph00077"/>
<map code="0x4e" name="glyph00078"/>
<map code="0x4f" name="glyph00079"/>
<map code="0x50" name="glyph00080"/>
<map code="0x51" name="glyph00081"/>
<map code="0x52" name="glyph00082"/>
<map code="0x53" name="glyph00083"/>
<map code="0x54" name="glyph00084"/>
<map code="0x55" name="glyph00085"/>
<map code="0x56" name="glyph00086"/>
<map code="0x57" name="glyph00087"/>
<map code="0x58" name="glyph00088"/>
<map code="0x59" name="glyph00089"/>
<map code="0x5a" name="glyph00090"/>
<map code="0x5b" name="glyph00091"/>
<map code="0x5c" name="glyph00092"/>
<map code="0x5d" name="glyph00093"/>
<map code="0x5e" name="glyph00094"/>
<map code="0x5f" name="glyph00095"/>
<map code="0x60" name="glyph00096"/>
<map code="0x61" name="glyph00097"/>
<map code="0x62" name="glyph00098"/>
<map code="0x63" name="glyph00099"/>
<map code="0x64" name="glyph00100"/>
<map code="0x65" name="glyph00101"/>
<map code="0x66" name="glyph00102"/>
<map code="0x67" name="glyph00103"/>
<map code="0x68" name="glyph00104"/>
<map code="0x69" name="glyph00105"/>
<map code="0x6a" name="glyph00106"/>
<map code="0x6b" name="glyph00107"/>
<map code="0x6c" name="glyph00108"/>
<map code="0x6d" name="glyph00109"/>
<map code="0x6e" name="glyph00110"/>
<map code="0x6f" name="glyph00111"/>
<map code="0x70" name="glyph00112"/>
<map code="0x71" name="glyph00113"/>
<map code="0x72" name="glyph00114"/>
<map code="0x73" name="glyph00115"/>
<map code="0x74" name="glyph00116"/>
</cmap_format_6>
</cmap>

<loca>
<!-- The 'loca' table will be calculated by the compiler -->
</loca>

<glyf>
<!-- The xMin, yMin, xMax and yMax values
will be recalculated by the compiler. -->
<TTGlyph name=".notdef" xMin="0" yMin="0" xMax="1000" yMax="1000">
<contour>
</contour>
<instructions><assembly>
</assembly></instructions>
</TTGlyph>
<TTGlyph name="glyph00001" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00002" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00003" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00004" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00005" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00006" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00007" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00008" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00009" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00010" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00011" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00012" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00013" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00014" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00015" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00016" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00017" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00018" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00019" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00020" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00021" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00022" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00023" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00024" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00025" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00026" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00027" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00028" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00029" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00030" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00031" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00032" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00033" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00034" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00035" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00036" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00037" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00038" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00039" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00040" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00041" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00042" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00043" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00044" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00045" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00046" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00047" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00048" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00049" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00050" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00051" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00052" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00053" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00054" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00055" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00056" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00057" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00058" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00059" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00060" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00061" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00062" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00063" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00064" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00065" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00066" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00067" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00068" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00069" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00070" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00071" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00072" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00073" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00074" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00075" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00076" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00077" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00078" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00079" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00080" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00081" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00082" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00083" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00084" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00085" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00086" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00087" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00088" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00089" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00090" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00091" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00092" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00093" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00094" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00095" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00096" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00097" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00098" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00099" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00100" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00101" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00102" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00103" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00104" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00105" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00106" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00107" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00108" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00109" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00110" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00111" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00112" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00113" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00114" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00115" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
<TTGlyph name="glyph00116" xMin="0" yMin="0" xMax="1000" yMax="1000">
</TTGlyph>
</glyf>
</ttFont>

Загрузка…
Отмена
Сохранить