身份证校验位计算器

合集下载

身份证号码计数法计算公式

身份证号码计数法计算公式

身份证号码计数法计算公式身份证号码是每个人在出生时就被赋予的一串数字,它不仅仅是一个身份的标识,更是一个包含着丰富信息的编码。

在中国,身份证号码是由18位数字和一个校验位组成的,其中包含了个人的出生年月日、性别、地区等信息。

而身份证号码计数法计算公式则是一种根据身份证号码的特定规律来进行计算的方法,通过这种方法可以得到一些有趣的结果。

首先,我们来看一下身份证号码的结构。

身份证号码由18位数字和一个校验位组成,其中前6位代表了个人的地区信息,接着的8位代表了出生年月日,然后是3位顺序码和1位校验位。

根据这个结构,我们可以得到身份证号码计数法计算公式的基本公式:N = (S + M) mod 11。

其中,N代表校验位的值,S代表身份证号码前17位数字的加权和,M代表S 对11取模得到的余数。

接下来,我们来看一下具体的计算方法。

首先,我们需要对身份证号码的前17位数字进行加权求和,具体的加权系数如下:1 02 9 8 7 6 5 43 2。

然后,将身份证号码的前17位数字与对应的加权系数相乘,并将结果相加,得到S的值。

接着,将S对11取模得到的余数就是M的值。

最后,将S和M相加并对11取模,得到的结果就是校验位N的值。

通过这个计算方法,我们可以得到身份证号码的校验位值,并且可以验证身份证号码的有效性。

同时,我们也可以利用这个计算方法来进行一些有趣的计算,比如计算身份证号码的奇偶性、出生年月日的特殊性等等。

除此之外,身份证号码计数法计算公式还可以用来进行一些统计分析。

比如,我们可以统计某个地区的身份证号码的校验位分布情况,从而了解这个地区的人口分布特点。

我们还可以统计某个年龄段的人群的身份证号码的校验位分布情况,从而了解这个年龄段的人群的身份证号码的特点。

通过这种统计分析,我们可以更深入地了解人口的结构和特点。

总之,身份证号码计数法计算公式是一种根据身份证号码的特定规律来进行计算的方法,通过这种方法可以得到一些有趣的结果,并且可以用来进行一些统计分析。

Python随机生成身份证号码及校验功能

Python随机生成身份证号码及校验功能

Python随机⽣成⾝份证号码及校验功能⾝份组成⽅式中华⼈民共和国国家标准GB 11643-1999《公民⾝份号码》中规定:公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位校验码组成。

18位数字组合的⽅式是:1 1 0 1 0 2Y Y Y Y M M D D8 88X区域码(6位)出⽣⽇期码(8位)顺序码(2位)性别码(1位)校验码(1位)区域码(6位) 出⽣⽇期码(8位) 顺序码(2位) 性别码(1位) 校验码(1位)•区域码指的是公民常住户⼝所在县(市、镇、区)的⾏政区划代码,如110102是北京市-西城区。

但港澳台地区居民的⾝份号码只精确到省级。

•出⽣⽇期码表⽰公民出⽣的公历年(4位)、⽉(2位)、⽇(2位)。

•顺序码表⽰在同⼀区域码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈编定的顺序号。

•性别码奇数表⽰男性,偶数表⽰⼥性。

•最后⼀位是校验码,这⾥采⽤的是ISO 7064:1983,MOD 11-2校验码系统。

校验码为⼀位数,但如果最后采⽤校验码系统计算的校验码是“10”,碍于⾝份证号码为18位的规定,则以“X”代替校验码“10”。

校验码计算⽅法•1. 将⾝份证号码从右⾄左标记为a_1 , a_2 , \cdots , a_{18},a_1即为校验码;•2. 计算权重系数 W_i=2^{i-1}\ \bmod \ {11}所以:i181716151413121110987654321Wi79105842163791058421•3. 计算S = \sum_{i=2}^{18} a_i \cdot W_i•4. a_1=(12-( S \ \bmod 11)) \bmod 11使⽤Python获取⾝份证校验码:def get_check_digit(id_number):"""通过⾝份证号获取校验码"""check_sum = 0for i in range(0, 17):check_sum += ((1 << (17 - i)) % 11) * int(id_number[i])check_digit = (12 - (check_sum % 11)) % 11return check_digit if check_digit < 10 else 'X'随机⽣成⾝份证由上⾯的组合⽅式我们可以得出以下代码:@classmethoddef generate_id(cls, sex=0):"""随机⽣成⾝份证号,sex = 0表⽰⼥性,sex = 1表⽰男性"""# 随机⽣成⼀个区域码(6位数)area_info = random.randint(0, len(addr))id_number = str(addr[area_info][0])# 限定出⽣⽇期范围(8位数)start, end = "1960-01-01", "2000-12-30"days = (datetime.datetime.strptime(end, "%Y-%m-%d") - datetime.datetime.strptime(start, "%Y-%m-%d")).days + 1birth_days = datetime.datetime.strftime(datetime.datetime.strptime(start, "%Y-%m-%d") + datetime.timedelta(random.randint(0, days)), "%Y%m%d")id_number += str(birth_days)# 顺序码(2位数)id_number += str(random.randint(10, 99))# 性别码(1位数)id_number += str(random.randrange(sex, 10, step=2))# 校验码(1位数)return id_number + str(cls(id_number).get_check_digit())⼯具类主要功能if __name__ == '__main__':random_sex = random.randint(0, 1) # 随机⽣成男(1)或⼥(0)print IdNumberUtil.generate_id(random_sex) # 随机⽣成⾝份证号print IdNumberUtil('410326************').area_id # 地址编码:410326print IdNumberUtil('410326************').get_area_name() # 地址:汝阳县print IdNumberUtil('410326************').get_birthday() # ⽣⽇:1995-7-10print IdNumberUtil('410326************').get_age() # 年龄:23(岁)print IdNumberUtil('410326************').get_sex() # 性别:1(男)print IdNumberUtil('410326************').get_check_digit() # 校验码:7print IdNumberUtil.verify_id('410326************') # 检验⾝份证是否正确:False总结以上所述是⼩编给⼤家介绍的Python随机⽣成⾝份证号码及校验功能,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

18位身份证号码检测

18位身份证号码检测

1.针对国内18位身份证号码验证,通过等价类划分法、边界值分析法设计相应的测试用例;根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

18位身份证号码各位的含义:1-2位省、自治区、直辖市代码;3-4位地级市、盟、自治州代码;5-6位县、县级市、区代码;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位为顺序号,其中17位男为单数,女为双数;18位为校验码,0-9和X。

作为尾号的校验码,是由号码编制单位按统一的公式计算出来的。

等价类划分法:输入条件有效等价类无效等价类地址码的第1位是1~8的整数(1)<1的整数(7)>1的整数(8)地址码2~6位5位每一位都是0~9的整数(2)特殊字符出生年月日7~14位11~12位为[01,12]的整数(3)13~14位为[01,31]整数(4)月<01(9)月>12(10)日<01(11)日>31(12)顺序码15~17位3位每一位都是0~9的整数(5)特殊字符校验码第18位是0~9的整数或者是X(6)特殊字符号码位数180 17 19测试用例:序号号码位数前17位第18位输入内容预期结果1 0 NULL 输入无效2 17 41130219901007283 输入无效3 19 4113021990100728317输入无效418 (1)(2)(3)(4)(5)(6)411302199010072831(X)输入正确5 特殊字符411302199010072831%输入无效6 (6)(2)(3)(4)(5(6)0113021990100728317 (7)(2)(3)(4)(5)9113021990100728318 (1)特殊字符(3)(4)(5)41@3021990100728319 (1)(2)(9)(4)(5)41130219900007283110 (1)(2)(10)(4)(5)41130219901307283111 (1)(2)(3)(11)(5)41130219901000283112 (1)(2)(3)(12)(5)41130219901032283113(1)(2)(3)(4)(5)闰年2月日为[01,29]411302200002272831输入有效日>29411302200002302831输入无效平2日为41130219990227283输入有效年月[01,28] 1日>28 411302199902292831输入无效14 (1)(2)(3)(4)特殊字符411302199010072%3115 全是字母aaaaaaaaaaaaaaaaaa16 全是特殊字符@#¥%!@#¥#¥%……@#。

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验⾝份证号码⼯具类(⽀持15位和18位)JAVA 校验⾝份证号码⼯具类(⽀持15位和18位)import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Hashtable;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** TODO* ⾝份证校验⼯具类*/public class IDCardUtil {/*校验规则:如果为15位,只能是15位数字;前两位满⾜省/直辖市的⾏政区划代码。

如果为18位,允许为18位数字,如出现字母只能在最后⼀位,且仅能为“X”;18位中包含年⽉的字段满⾜⽇期的构成规则;前两位满⾜省/直辖市的⾏政区划代码;最后⼀位校验位满⾜⾝份证的校验规则(⾝份证校验规则见附录)。

附录:⾝份证校验规则公民⾝份证号码校验公式为RESULT = ∑( A[i] * W[i] ) mod 11。

其中,i表⽰号码字符从右⾄左包括校验码在内的位置序号;A[i]表⽰第I位置上的数字的数值;W[i]表⽰第i位置上的加权因⼦,其值如下:i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2W[i] 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2RESULT 0 1 2 3 4 5 6 7 8 9 10校验码A[1] 1 0 X 9 8 7 6 5 4 3 2*/public static boolean idCardValidate(String idCard) {String[] valCodeArr = {"1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"};String[] wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"};String ai = "";String ai1 = "";String ai2 = "";// 号码的长度 15位或18位if (idCard.length() != 15 && idCard.length() != 18) {return false;}// 数字除最后以为都为数字if (idCard.length() == 18) {ai = idCard.substring(0, 17);} else if (idCard.length() == 15) {ai = idCard.substring(0, 6) + "19" + idCard.substring(6, 15);}if (!isNumeric(ai)) {return false;}// 出⽣年⽉是否有效String strYear = ai.substring(6, 10); // 年份String strMonth = ai.substring(10, 12); // ⽉份String strDay = ai.substring(12, 14); // ⽉份if (!isDataFormat(strYear + "-" + strMonth + "-" + strDay)) {return false;}GregorianCalendar gc = new GregorianCalendar();SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");try {if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150|| (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {return false;}} catch (Exception e) {e.printStackTrace();}if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {return false;}if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {return false;}// 地区码是否有效Hashtable h = getAreaCode();if (h.get(ai.substring(0, 2)) == null) {return false;}// 判断最后⼀位的值int totalmulAiWi = 0;for (int i = 0; i < 17; i++) {totalmulAiWi = totalmulAiWi + Integer.parseInt(String.valueOf(ai.charAt(i))) * Integer.parseInt(wi[i]);}int modValue = totalmulAiWi % 11;String strVerifyCode = valCodeArr[modValue];ai1 = ai + strVerifyCode.toUpperCase();ai2 = ai + strVerifyCode.toLowerCase();if (idCard.length() == 18) {if (!ai1.equals(idCard) && !ai2.equals(idCard)) {return false;}}return true;}private static boolean isNumeric(String str) {Pattern pattern = pile("[0-9]*");Matcher isNum = pattern.matcher(str);if (isNum.matches()) {return true;}return false;}private static boolean isDataFormat(String str) {boolean flag = false;String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([135 Pattern pattern1 = pile(regxStr);Matcher isNo = pattern1.matcher(str);if (isNo.matches()) {flag = true;}return flag;}private static Hashtable getAreaCode() { Hashtable hashtable = new Hashtable(); hashtable.put("11", "北京");hashtable.put("12", "天津");hashtable.put("13", "河北");hashtable.put("14", "⼭西");hashtable.put("15", "内蒙古");hashtable.put("21", "辽宁");hashtable.put("22", "吉林");hashtable.put("23", "⿊龙江");hashtable.put("31", "上海");hashtable.put("32", "江苏");hashtable.put("33", "浙江");hashtable.put("34", "安徽");hashtable.put("35", "福建");hashtable.put("36", "江西");hashtable.put("37", "⼭东");hashtable.put("41", "河南");hashtable.put("42", "湖北");hashtable.put("43", "湖南");hashtable.put("44", "⼴东");hashtable.put("45", "⼴西");hashtable.put("46", "海南");hashtable.put("50", "重庆");hashtable.put("51", "四川");hashtable.put("52", "贵州");hashtable.put("53", "云南");hashtable.put("54", "西藏");hashtable.put("61", "陕西");hashtable.put("62", "⽢肃");hashtable.put("63", "青海");hashtable.put("64", "宁夏");hashtable.put("65", "新疆");hashtable.put("71", "台湾");hashtable.put("81", "⾹港");hashtable.put("82", "澳门");hashtable.put("91", "国外");return hashtable;}}。

第二代居民身份证号码的校验码计算模型、步骤、公式

第二代居民身份证号码的校验码计算模型、步骤、公式

②将公式①的(2n ÷ 11取余) 普 去掉,只留2n 通 公 式 ③将公式①的LookUp函数 换成Mid函数
④将公式②的LookUp函数 换成Mid函数
⑤将公式①变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11),{0;1;2;3;4;5;6;7;8;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 数 组 公 式 ⑥将公式②变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18ROW(INDIRECT("1:178;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 ⑦将公式③变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11)+1,1) 按Ctrl+Shift+Enter组合键 ⑧将公式④变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 按Ctrl+Shift+Enter组合键

身份证校验(c++实现)

身份证校验(c++实现)

⾝份证校验(c++实现)描述:我国国标〖GB 11643-1999〗中规定:公民⾝份号码是18位特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

其校验码(最后⼀位)计算⽅法和步骤为:(1)⼗七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和其中Ai:表⽰第i位置上的⾝份证号码数字值Wi:表⽰第i位置上的加权因⼦,前17位加权因⼦从左到右分别为Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2(2)计算模Y = mod(S, 11)(3)通过模Y查下表得到对应的校验码Y012345678910校验码10X98765432例如:某⾝份证前17位为11010519491231002i1234567891011121314151617wi791058421637910584211010519491231002积7905020292427718305004得到和为:167;则模为y=167%11=2查(3)得校验码为X(⼤写)请按上⾯所述步骤编程,输⼊⼀个⼆代⾝份证号,检查该⾝份证是否正确。

输⼊:输⼊若⼲⾏,每⾏⼀个⾝份证号码,最后⼀⾏输⼊-1输出:输出1代表正确,0代表错误input:120223************130132************130402************-1output:111 #include<iostream>2 #include<string>3using namespace std;45int cal(string a)6 {7return (a[0] - '0') * 7 + (a[1] - '0') * 9 + (a[2] - '0') * 10 + (a[3] - '0') * 5 + (a[4] - '0') * 8 + (a[5] - '0') *4 + (a[6] - '0') * 2 + (a[7] - '0') * 1 + (a[8] - '0') * 6 +(a[9] - '0') * 3 + (a[10] - '0') * 7 + (a[11] - '0') * 9 + (a[12] - '0') * 10 + (a[13] - '0') * 5 8 }910char s(string a)11 {12int k = cal(a) % 11;13if (k == 0)14return'1';15else if (k == 1)16return'0';17else if (k == 2)18return'X';19else20return'0'+12-k;21 }22int main()23 {24string number;25while ((cin >> number) && number != "-1")26 {27if (number[17] == s(number))28 cout << "1" << endl;29else30 cout << "0" << endl;31 }32 system("pause");33return0;34 }。

SF-身份证号批量计算工具

SF-身份证号批量计算工具

原身份证生成身份证号校验位正确性周岁#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!#VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE! #VALUE!#VALUE!#VALUE!身份证位数0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0。

自动转换15位身份证号码位18位

自动转换15位身份证号码位18位

自动转换15位身份证号码位18位功能:将15的身份证号升为18位(根据GB 11643-1999)参数:原来的号码(15位)返回:升位后的18位号码用法:=IDCODE(a1) (假设A1放的是原15位号码)关于身份证号码最后一位的校验码的算法如下:我国现行使用公民身份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。

〖GB 11643-1989〗中规定的是15位身份证号码:排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。

〖GB 11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。

生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。

顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。

顺序码的奇数分给男性,偶数分给女性。

校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

公式如下:∑(a[i]*W[i]) mod 11 ( i = 2, 3, …, 18 ) (1)”*” 表示乘号i——–表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。

a[i]—–表示身份证号码第 i 位上的号码W[i]—–表示第 i 位上的权值 W[i] = 2^(i-1) mod 11计算公式 (1) 令结果为 R根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。

R 0 1 2 3 4 5 6 7 8 9 10C 1 0 X 9 8 7 6 5 4 3 2由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。

15位和18位身份证JS校验的简单实例

15位和18位身份证JS校验的简单实例

15位和18位⾝份证JS校验的简单实例⼀、⾝份证号码的结构和表⽰形式1、号码的结构根据〖中华⼈民共和国国家标准GB11643-1999〗中有关公民⾝份号码的规定,公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

2、地址码表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码,按GB/T2260的规定执⾏。

3、出⽣⽇期码表⽰编码对象出⽣的年、⽉、⽇,按GB/T7408的规定执⾏,年、⽉、⽇代码之间不⽤分隔符。

4、顺序码表⽰在同⼀地址码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈编定的顺序号,顺序码的奇数分配给男性,偶数分配给⼥性。

5、校验码(1)⼗七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和Ai:表⽰第i位置上的⾝份证号码数字值Wi:表⽰第i位置上的加权因⼦7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2(2)计算模Y = mod(S, 11)(3)通过模得到对应的校验码Y: 0 1 2 3 4 5 6 7 8 9 10校验码: 1 0 X 9 8 7 6 5 4 3 2也就是说,如果得到余数为1则最后的校验位p应该为对应的0。

15位的号码:a ab bc c y y m md d x x s18位的号码:a ab bc c y y y y m md d x x s p⼆、地址码⾝份证前6位为⾏政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华⼈民共和国⾏政区划代码》):该数字码的编制原则和结构分析,它采⽤三层六位层次码结构,按层次分别表⽰我国各省(⾃治区,直辖市,特别⾏政区)、市(地区,⾃治州,盟)、县(⾃治县、县级市、旗、⾃治旗、市辖区、林区、特区)。

(1)第1、2位数字:所在省份编码,表⽰省、⾃治区、直辖市、特别⾏政区。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档