为什么List< >[] ls = new ArrayList < > []不行,而List<String>[] ls = new ArrayList []可以? 5C

看到一个结论:“Java不能创建泛型类型的数组”
并举例:

List<String>[] ls = new ArrayList <String> [10];     //不可以的!

但下面又举例:

List<String>[] ls = new ArrayList [10];     //可以!

然后网上大致都讲了,为什么Java不支持范型数组,

List<String>[] lsa = new List<String>[10];         // Not really allowed.    
Object o = lsa;     
Object[] oa = (Object[]) o;               //oa[0] = o = lsa[]
List<Integer> li = new ArrayList<Integer>();    
li.add(new Integer(3));       
oa[1] = li;                          // Unsound, but passes run time store check    
String s = lsa[1].get(0);    // Run-time error: ClassCastException.

然后可以使用:

List<?>[] ls = new ArrayList <?> [10];      //可以!

再用上面那段代码,不过是将String替换成了?,那显然是可以的。

我的问题是:

List<String>[] ls = new ArrayList <String> [10];
不过比List<String>[] ls = new ArrayList [10];在后面多了个 < String>。
再说了,前面一个< String>已经声明了类型实参,后面一个< String>本来就没什么用处。为什么后面一个支持,而前面这个不支持?而且后面这个不是范型数组么???

(CSDN有问题,《String》半角字符不显示,更新一下问题)

关于楼下2楼都说"new ArrayList [10]",我觉得事实胜于雄辩。输入的时候idea没有报错,上例子:

        List<String>[] ls = new ArrayList[3];
        List<String> l1 = new ArrayList<>();
        l1.add("1");
        l1.add("2");
        List<String> l2 = new ArrayList<>();
        l2.add("a");
        l2.add("b");
        ls[0] = l1;
        ls[1] = l2;
        for (int i = 0; i < ls.length; i++) {
            System.out.println(ls[i]);
        }

输出结果为:

[1, 2]
[a, b]
null

2个回答

new ArrayList <String> [10]; 
```会导致编译器报错“Generic array creation”,可见这是 Java 语法规定的。
究其根源,跟泛型擦除有关,就是JVM将泛型存储的东西都视为Object,《Java 编程思想》中也着重说明过这种情况。
泛型数组的底层还是比较的复杂的,具体可以详细看看这篇文章:http://developer.51cto.com/art/201202/317813.htm
wojiushiwo945you
毕小宝 回复士弘毅: 刚刚编辑答案时发现是浏览器回显的问题<String> 这个泛型被隐藏了,我用代码包裹起来就正常了。
6 个月之前 回复
wojiushiwo945you
毕小宝 回复士弘毅: 可能是反复测试最后写答案时复制混了,加上泛型时编译器会报错的。
6 个月之前 回复
Du939
士弘毅 请不要复制粘贴!我敲了下,是可以运行的
6 个月之前 回复

List[] ls = new ArrayList [10]; //不可以的!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 如何将list拆分成多个list
List<Map> ls = new ArrayList (); Map m =new HashMap(); m.put("NAME","ZS"); m.put("AGE","45"); m.put("SEX","Y"); Map m1 =new HashMap(); m1.put("NAME","LIX"); m1.put("AGE","12"); m1.put("SEX","Y"); Map m2 =new HashMap(); m2.put("NAME","XF"); m2.put("AGE","29"); m2.put("SEX","N"); .... ls.add(m); ls.add(m1); ls.add(m2); ...... ls.add(mn); list有n个元素。如何根据m的AGE属性,获得多个list<Map>,每个list中只存放相同age的map。
程序中断,怎么在从中断的地方开始,
list ls =new arraylist(); for(string s : ls){ run(s); //一个方法 } 现在运行100遍 ,其中一次运行出异常,中断了,现在怎么写能从中断的程序开始继续运行 剩下的方法
ibatis批量修改,,,
ibatis批量修改,传入一个map, String id; List<String> ids = new ArrayList<String>(); List<Object> ls = new ArrayList<Object>(); map.put("id", id); map.put("ids", ids); map.put("ls", ls); sql代码: <update id="editLimit" parameterClass="java.util.HashMap"> update dic_limit_value set <iterate property="ls" open="case" close="end" > LIMIT_VALUE = #ls[].limitValue#,ERROR_LIMIT = #ls[].errorLimit#,EX_LIMIT = #ls[].exLimit# </iterate> where BTS_ID = #stid# <isNotNull property="ls"> and LIMIT_ID in <iterate property="ls" conjunction="," open="(" close=")"> #ls[].limitIDs# </iterate> </isNotNull> </update> 这样的写法是错的,请问应该怎么写
Spring MVC 拼接json后,页面跳转并传json数据
从页面A传入参数,在spring controller 中拼接成json数据,怎样跳转到页面B,并同时传递拼接成的json数据? 代码如下: @RequestMapping(value = "/saleout/precheck", method = RequestMethod.GET) //初次查询 public @ResponseBody Map<String,Object> precheckStoreInForm(HttpServletRequest request,SaleOut saleout , Map<String,Object> map,PageInfo sopg){ //传入参数,并做逻辑处理 List<SaleOut> ls=new ArrayList<SaleOut>(); for(SaleOut s:results){ ls.add(s); } Map<String,Object> tempMap=new HashMap<String,Object>(); tempMap.put("rows", ls); tempMap.put("total", ls.size()); return tempMap; } 目前这种处理方式json数据直接显示在页面A中,无法实现跳转到页面B并展示json数据。 用ajax回调函数实现跳转则无法显示json数据,并且调试不显示任何错误,无法定位。 请问在Spring MVC中是否可以实现跳转页面且同时传递json数据? 多谢。
为什么检索出来的list列表为空,或者来人教我别的查询方法吗。。
先放报错: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 java.util.ArrayList.rangeCheck(ArrayList.java:653) java.util.ArrayList.get(ArrayList.java:429) org.apache.jsp.product_005flist2_jsp._jspService(product_005flist2_jsp.java:103) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 然后前面的JSP页面是输入名称进行查询的,把名称传递到这个查询的页面,再进行查询,我是这么写的: <%String p=request.getParameter("product_name"); List<Product> ls = DAOFactory.getIEmpDAOInstance().findAll(p); Product pr=ls.get(0); out.println(pr.getProduct_id()); %> 然后我把后面的删去,println那个p,是有值的,意思是下面那句话findAll出来的东西是空的,如果我什么都不输入,查询的结果就是整个数据库的第一行的那个id是可以的,但是无论我输入什么已有的name,都说我列表空的,检索超范围。 附List和findAll的bean。 package com.eshore.dao; import java.sql.*; import java.util.*; import com.eshore.pojo.Product; public class ProductDaoImpl implements ProductDao { private Connection conn = null; private PreparedStatement pstmt = null; public ProductDaoImpl(Connection conn){ this.conn = conn; } public boolean addProduct(Product product) throws Exception{ boolean flag = false ; String sql =" insert into product(product_id,product_name,price,info) values(?,?,?,?)"; this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setString(1,product.getProduct_id()); this.pstmt.setString(2,product.getProduct_name()); this.pstmt.setDouble(3,product.getPrice()); this.pstmt.setString(4,product.getInfo()); if (this.pstmt.executeUpdate()>0) { flag = true; } this.pstmt.close(); return flag; } public List<Product> findAll(String product_name) throws Exception{ List<Product> list = new ArrayList<Product>(); String sql = "select product_id,product_name,price,info from product"; if(product_name!=null&&!"".equals(product_name)){ sql = "select product_id,product_name,price,info from product where product_name like? "; this.pstmt = this.conn.prepareStatement(sql); this.pstmt.setString(1," `%" + product_name + "%` "); } else { this.pstmt = this.conn.prepareStatement(sql); } ResultSet rs = this.pstmt.executeQuery(); Product product = null; while (rs.next()){ product = new Product(); product.setProduct_id(rs.getString(1)); product.setProduct_name(rs.getString(2)); product.setPrice(rs.getDouble(3)); product.setInfo(rs.getString(4)); list.add(product); } this.pstmt.close(); return list; } public Product findByProductId(String product_id) throws Exception{ Product product = null; String sql ="select product_id,product_name,price,info from product where product_id =?"; this.pstmt = this .conn .prepareStatement(sql); this.pstmt.setString(1, product_id); ResultSet rs = this.pstmt.executeQuery(); if (rs.next()) { product = new Product(); product.setProduct_id(rs.getString(1)); product.setProduct_name(rs.getString(2)); product.setPrice(rs.getDouble(3)); product.setInfo(rs.getString(4)); } this.pstmt.close(); return product ; } } public List<Product> findAll(String product_name) throws Exception{ List<Product> all=null; try{ all = this.dao.findAll(product_name); } catch (Exception e){ throw e; } finally { this.dbconn.close(); } return all; }
hibernate处理的数据量太多,会报游标超出的错误。求大神帮忙
public List<Object> getMessageCount(String agentId,Date detectingTime,Date endTime) { StringBuffer sbf = new StringBuffer(); sbf.append("select targetAddress,sourceaddress, count(targetAddress) from VpnRecord where 1=1"); String sf = ""; if(agentId != null && !"".equals(agentId)){ sf = " and agentid='"+ agentId+"'"; } if(detectingTime != null && endTime != null){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String start = sdf.format(detectingTime); String end = sdf.format(endTime); sf += " and detectingTime >='" + start + "' and endTime <= '" + end + "'"; } if(detectingTime == null && endTime != null){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String end = sdf.format(endTime); sf += " and endTime <= '" + end + "'"; } sbf.append(sf+" group by targetAddress ,sourceaddress"); List<Object[]> ls=this.getSession().createSQLQuery(sbf.toString()).list(); ArrayList list = new ArrayList(); int i = 0; for(Object[] rows : ls){ i++; String queryHql = "from VpnRecord where targetaddress='"+ rows[0]+"' and sourceaddress = '"+rows[1]+"'" + sf; Query queryObject2 = this.getSession().createQuery(queryHql); queryObject2.setFirstResult(0); queryObject2.setMaxResults(10); List<VpnRecord> list3=queryObject2.list(); VpnTemporary vpn = new VpnTemporary(); vpn.setId(i); vpn.setTargetAddress(rows[0].toString()); vpn.setSourceAddress(rows[1].toString()); vpn.setMessageCount(Integer.parseInt(rows[2].toString())); vpn.setList2(list3); list.add(vpn); log.info("target 值: " + rows[0] + "source 值: " + rows[1]+"\t 通讯总数="+Integer.parseInt(rows[2].toString())); } return list; } ![图片说明](https://img-ask.csdn.net/upload/201506/19/1434699386_154547.png)
Mybatis批量添加:报错信息:ORA-00933: SQL 命令未正确结束
Mybatis里面: <insert id="insert" useGeneratedKeys="true" parameterType="java.util.Map"> insert into USER_ROLE_AUT (RU_ID, RU_ROLE_ID, RU_AUT_ID, RU_TIME_INS, RU_USER_INS, RU_TIME_LST, RU_USER_LST, RU_STATUS) select U.* from USER_ROLE_AUT ( <foreach collection="maps" item="item" index="index" separator="union all" > select RU_ID_SEQ.Nextval, #{item.ruRoleId,jdbcType=DECIMAL}, #{item.ruAutId,jdbcType=DECIMAL}, #{item.ruTimeIns,jdbcType=TIMESTAMP}, #{item.ruUserIns,jdbcType=VARCHAR}, #{item.ruTimeLst,jdbcType=TIMESTAMP}, #{item.ruUserLst,jdbcType=VARCHAR}, #{item.ruStatus,jdbcType=CHAR} from USER_ROLE_AUT </foreach> )U </insert> action里面: @RequestMapping("roleAutSave") @ResponseBody public Map roleAutSave(HttpServletRequest request, HttpSession session) throws SystemException { Map<String, Object> rtnmap = null; Map<String, Object> map = new HashMap<String, Object>(); try { String ruAutId = request.getParameter("ruAutId");// 获取到树形菜单选中的节点 System.out.println(ruAutId); String[] adeArrs = ruAutId.split(","); System.out.println(adeArrs); String ruRoleId = request.getParameter("ruRoleId");// 获取选中的角色id String ruUserIns = request.getParameter("ruUserIns");// 获取登录的账号 List<UserRoleAut> ls = new ArrayList<UserRoleAut>(); UserRoleAut ur = null; for (String ade : adeArrs) { ur = new UserRoleAut(); ur.setRuRoleId(new Long(ruRoleId)); ur.setRuAutId(new Long(ade)); ur.setRuUserIns(ruUserIns); ls.add(ur); } map.put("maps", ls); userRoleAutMapper.insert(map);// 保存 userRoleAutMapper.deleteByPrimaryKey(); rtnmap = okMap("roleAut"); } catch (Exception e) { rtnmap = failMap("roleAut"); e.printStackTrace(); } return rtnmap; }
java从sftp上下载到本地磁盘的zip文件读取不了,请大家帮忙解答下,谢谢!
从sftp上下载到本地的zip文件是没问题的,用压缩工具打开能查看里面的文件,为什么就是读取不了呢? java从sftp下载zip文件到本地磁盘代码: import java.io.InputStream; import java.util.Date; import com.ibm.gbs.ai.portal.framework.util.DateUtils; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class FtpZipOption { public static String ftpServer = "***";//有关机密不便给大家看,理解万岁! public static int ftpPort = 22; public static String ftpUserName = "***"; public static String ftpPassword = "***"; @SuppressWarnings({ "rawtypes", "resource" }) public static void main(String[] args) throws Exception { Session session = null; Channel channel = null; JSch jsch = new JSch(); if(ftpPort <=0){ //连接服务器,采用默认端口 session = jsch.getSession(ftpUserName, ftpServer); }else{ //采用指定的端口连接服务器 session = jsch.getSession(ftpUserName, ftpServer ,ftpPort); } //如果服务器连接不上,则抛出异常 if (session == null) { throw new Exception("session is null"); } //设置登陆主机的密码 session.setPassword(ftpPassword);//设置密码 java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); //设置登陆超时时间 session.connect(); try { //创建sftp通信通道 channel = (Channel) session.openChannel("sftp"); channel.connect(); ChannelSftp sftp = (ChannelSftp) channel; //进入服务器指定的文件夹 sftp.cd("download/"+DateUtils.convert(DateUtils.convert(DateUtils.addDay(new Date(), -1)), "yyyyMMdd")); String[] tt = sftp.ls("*.zip").get(0).toString().split(" "); InputStream input = sftp.get(tt[tt.length-1]); sftp.get("D:\\hh", tt[tt.length-1]); // ftp.openConnect(); /*if (ftp.createFile("/alipay/download/"+DateUtils.convert(DateUtils.convert(DateUtils.addDay(new Date(), -1)), "yyyyMMdd"))) { ftp.uploadFile("/alipay/download/"+DateUtils.convert(DateUtils.convert(DateUtils.addDay(new Date(), -1)), "yyyyMMdd"), "alipay_record_"+DateUtils.convert(DateUtils.convert(DateUtils.addDay(new Date(), -1)), "yyyyMMdd")+".zip",input); }*/ input.close(); } catch (Exception e) { System.out.println(e.getMessage()); }finally{ session.disconnect(); channel.disconnect(); } } } java读取从sftp上下载到本地的zip文件代码: import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import org.apache.commons.collections.CollectionUtils; import com.ibm.gbs.ai.portal.framework.util.StringUtils; public class testUtils { @SuppressWarnings({ "resource", "unused" }) public static void main(String[] args) throws IOException { // logger.info("进入下载。。。。"); String localFtp ="alipay_record_20150324.txt"; // FtpUtils ftp = new FtpUtils(Const.FTP_SERVER, Const.FTP_PROT, Const.FTP_USER_NAME, Const.FTP_PASSWORD); // ftp.openConnect(); String productName = "商品名称"; String likeFileName = "财务明细.csv"; ZipFile zipFile = null; byte[] buffer = new byte[1024]; // InputStream in = ftp.returnFileStream(new String(remoteFile, "gb2312")); InputStream in = new BufferedInputStream(new FileInputStream("D:\\hh\\2088001502510167_20150325.zip")); // CheckedInputStream csumi = new CheckedInputStream(in, new Adler32()); ZipInputStream zin = new ZipInputStream(in); if (in != null) { try { ZipEntry zz = null; List<String> list = new ArrayList<String>(); if (zin == null) { return; }else { while ((zz = zin.getNextEntry()) != null) {//在这把报错了,错误是:“java.lang.IllegalArgumentException”,zin.getNextEntry()因为ZipInputStream对象zin中根本这个属性 if (zz.isDirectory()) { return; }else { String name = zz.getName(); String [] names = name.split("_"); if (StringUtils.equals(names[names.length-1].trim(), likeFileName)) { @SuppressWarnings("null") final BufferedReader br = new BufferedReader(new InputStreamReader(zipFile.getInputStream(zz),"gb2312")); String line; while ((line = br.readLine()) != null) { final StringTokenizer st = new StringTokenizer(line, ""); String [] temps = line.split(","); if (temps.length < 9 || StringUtils.equals(productName, temps[8].trim())) { continue; } final String rowInfo = st.nextToken(); list.add(rowInfo+"\n"); } } } } if (CollectionUtils.isNotEmpty(list)) { for (int i = 0; i < list.size(); i++) { buffer = list.get(i).getBytes(); } ByteArrayInputStream input = new ByteArrayInputStream(buffer); // String filePath = "/alipay/download/"+DateUtils.convert(DateUtils.convert(DateUtils.addDay(new Date(), -2)), "yyyyMMdd"); // ftp.uploadFile(filePath, localFtp, input); input.close(); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if (zin != null) { zin.close(); } } catch (Exception e2) { // logger.error("关闭流异常:"+e2.getMessage()); e2.printStackTrace(); } } } // ftp.close(); // logger.info("下载结束!"); } }
EasyUI取MVC传的json数据
用Spring MVC 拼接一个json数据(测试json数据正常),主要代码如下: @RequestMapping(value = "/saleout/precheck", method = RequestMethod.GET) public @ResponseBody ModelAndView precheckStoreInForm(HttpServletRequest request,SaleOut saleout , Map<String,Object> map,PageInfo sopg){ ModelAndView mav = new ModelAndView("/saleOut/searchSaleoutResults"); ....(逻辑省略) List<SaleOut> ls=new ArrayList<SaleOut>(); for(SaleOut s:results){ ls.add(s); } JSONArray jsonArray = JSONArray.fromObject(ls); logger.info("test>>>>>>>>>>>"+jsonArray); //打印json数据正常 map.put("selectResults", jsonArray); mav.addAllObjects(map); return mav; 在页面中直接引入EasyUI的Basic DataGrid 问题出在:<table class="easyui-datagrid" title="Basic DataGrid" style="width:700px;height:250px" data-options="singleSelect:true,collapsible:true,url:'/store/saleout/precheck/',method:'get'"> <thead> <tr> <th data-options="field:'selectResults.id',width:80">ID</th> <th data-options="field:'selectResults.product_name',width:100">产品名称</th> } 发现数据不显示,也不提示任何错误,应该是url和 data-options中的field又错,又不知道该怎么改,谁能指点一下。3Q
hibernate如何保存三层结构的数据表
各位大神,小弟急求! 我现在想实现以下功能: 学校——班级——学生之间均为一对多的关系,我想实现在保存学校信息的同时能够将班级信息和学生信息均保存。目前代码如下: 学校类: ``` @Entity public class School { private String id; private String name; private List<Clazz> clazzSet; @OneToMany(mappedBy = "school", fetch = FetchType.LAZY) @Cascade(CascadeType.SAVE_UPDATE) public List<Clazz> getClazzSet() { return clazzSet; } public void setClazzSet(List<Clazz> clazzSet) { this.clazzSet = clazzSet; } @GeneratedValue(generator = "student") @GenericGenerator(name = "student", strategy = "uuid") @Id @Column(name = "ID") public String getId() { return id; } public void setId(String id) { this.id = id; } @Basic @Column(name = "NAME") public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` 班级类: ``` @Entity @Table(name = "CLASS", schema = "PUBLIC", catalog = "HIBERNATE") public class Clazz { private String id; private String num; private School school; private List<Student> studentSet; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "SCHOOL_ID", referencedColumnName = "ID") public School getSchool() { return school; } public void setSchool(School school) { this.school = school; } @OneToMany(mappedBy = "clazz", fetch = FetchType.LAZY) @Cascade(CascadeType.SAVE_UPDATE) public List<Student> getStudentSet() { return studentSet; } public void setStudentSet(List<Student> studentSet) { this.studentSet = studentSet; } @GeneratedValue(generator = "student") @GenericGenerator(name = "student", strategy = "uuid") @Id @Column(name = "ID") public String getId() { return id; } public void setId(String id) { this.id = id; } @Basic @Column(name = "NUM") public String getNum() { return num; } public void setNum(String num) { this.num = num; } } ``` 学生类: ``` @Entity public class Student { private String id; private String name; private Clazz clazz; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "CLASS_ID", referencedColumnName = "ID") public Clazz getClazz() { return clazz; } public void setClazz(Clazz clazz) { this.clazz = clazz; } @GeneratedValue(generator = "student") @GenericGenerator(name = "student", strategy = "uuid") @Id @Column(name = "ID") public String getId() { return id; } public void setId(String id) { this.id = id; } @Basic @Column(name = "NAME") public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` 测试代码如下: ``` @org.junit.Test public void testSave() { Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); School school = new School(); school.setName("北航"); List<Clazz> clazzList = new ArrayList<>(2); Clazz clazz1 = new Clazz(); clazz1.setSchool(school); clazz1.setNum("01"); Clazz clazz2 = new Clazz(); clazz2.setSchool(school); clazz2.setNum("02"); List<Student> studentList1 = new ArrayList<>(2); Student stu1 = new Student(); stu1.setClazz(clazz1); stu1.setName("zs"); Student stu2 = new Student(); stu2.setClazz(clazz1); stu2.setName("ls"); studentList1.add(stu1); studentList1.add(stu2); List<Student> studentList2 = new ArrayList<>(2); Student stu3 = new Student(); stu3.setClazz(clazz2); stu3.setName("ww"); Student stu4 = new Student(); stu3.setClazz(clazz2); stu4.setName("zl"); studentList2.add(stu3); studentList2.add(stu4); clazz1.setStudentSet(studentList1); clazz2.setStudentSet(studentList2); clazzList.add(clazz1); clazzList.add(clazz2); school.setClazzSet(clazzList); session.save(school); transaction.commit(); session.close(); } ``` 测试时报错如下: ![图片说明](https://img-ask.csdn.net/upload/201503/16/1426514963_117873.png) 请问各位大神,何解???
求助jsoup取页面之后输出的问题
取出的表格数据为空,请问这是string body的问题么... 如果要解决问题应该怎样修改... ``` import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Main { public static void main(String[] args) throws Throwable { for (int i = 1; i <= 3; i++) { System.out.println(getPrice(i)); } } static List<String> getPrice(int pageNo) throws Throwable { Document doc = Jsoup.parse(getText(pageNo)); Elements trs = doc.select("#ctl00_cphMainFrame_Table1 tr"); List<String> result = new ArrayList<String>(trs.size()); for (int i = 1, l = trs.size(); i < l; i++) { Element tr = trs.get(i); result.add(tr.child(5).text()); } return result; } static String getText(int pageNo) throws Throwable { URL url = new URL("http://www.lnprice.gov.cn/wjjc/jgjc/ReportByDateOfPivot.aspx?PriceBureauMainType_Id=101&YM=201502&DP=28"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"); conn.setDoOutput(true); conn.connect(); String body = "ctl00%24cphMainFrame%24ScriptManager1=ctl00%24cphMainFrame%24UpdatePanel1%7Cctl00%24cphMainFrame%24aspnetpager1&ctl00%24cphMainFrame%24ddlYear=2015&ctl00%24cphMainFrame%24ddlMonth=02&ctl00%24cphMainFrame%24ddlTimePoint=28&__EVENTTARGET=ctl00%24cphMainFrame%24aspnetpager1&__LASTFOCUS=&__VIEWSTATE=%2FwEPDwULLTEwNTcyNDc4NjkPZBYCZg9kFgICAQ9kFgQCAQ8WAh4LXyFJdGVtQ291bnQCCxYWZg9kFgJmDxUCAzEwMQzlhpzlia%2Fkuqflk4FkAgEPZBYCZg8VAgMxMDcP5bel5Lia5raI6LS55ZOBZAICD2QWAmYPFQIDMTA4EuW3peS4mueUn%2BS6p%2Bi1hOaWmWQCAw9kFgJmDxUCAzEwORjln47luILlsYXmsJHmnI3liqHku7fmoLxkAgQPZBYCZg8VAgMxMTAY5Yac5p2R5bGF5rCR5pyN5Yqh5Lu35qC8ZAIFD2QWAmYPFQIDMTExDOa2ieWGnOS6p%2BWTgWQCBg9kFgJmDxUCAzEwMhwyMDEz5bm05Lul5YmN5bel5Lia5raI6LS55ZOBZAIHD2QWAmYPFQIDMTAzHzIwMTPlubTku6XliY3lt6XkuJrnlJ%2FkuqfotYTmlplkAggPZBYCZg8VAgMxMDQZMjAxM%2BW5tOS7peWJjeacjeWKoeS7t%2BagvGQCCQ9kFgJmDxUCAzEwNR8yMDEz5bm05Lul5YmN5Yac5Lia55Sf5Lqn6LWE5paZZAIKD2QWAmYPFQIDMTA2GTIwMTPlubTku6XliY3mtonlhpzkuqflk4FkAgMPZBYQAgEPDxYCHgRUZXh0BQzlhpzlia%2Fkuqflk4FkZAIDDw8WBB8BBVw8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweDsiICBjbGFzcz0ibXNqZ19jaGF4dW5feHhrMV9iZzAwIiA%2B5oyJ5YiG57G75YWo55yB5p%2Bl6K%2BiPC9zcGFuPh4LTmF2aWdhdGVVcmwFM1JlcG9ydEJ5RGF0ZU9mUGl2b3QuYXNweD9QcmljZUJ1cmVhdU1haW5UeXBlX0lkPTEwMWRkAgQPDxYEHwEFQTxzcGFuIGNsYXNzPSJtc2pnX2NoYXh1bl94eGsxX2JnMTEiID7mjInllYblk4HliIbluILmn6Xor6I8L3NwYW4%2BHwIFNVJlcG9ydEdvb2RzSW5mb0J5Q2l0eS5hc3B4P1ByaWNlQnVyZWF1TWFpblR5cGVfSWQ9MTAxZGQCBQ8PFgQfAQVCPHNwYW4gY2xhc3M9Im1zamdfY2hheHVuX3h4azFfYmcxMSIgPuaMieaXtumXtOWIhuW4guafpeivoiA8L3NwYW4%2BHwIFMFJlcG9ydEluZm9ieVRpbWUuYXNweD9QcmljZUJ1cmVhdU1haW5UeXBlX0lkPTEwMWRkAgcPEA8WBh4NRGF0YVRleHRGaWVsZAUKQ3JlYXRlWWVhch4ORGF0YVZhbHVlRmllbGQFCkNyZWF0ZVllYXIeC18hRGF0YUJvdW5kZ2QQFRAEMjAwMAQyMDAxBDIwMDIEMjAwMwQyMDA0BDIwMDUEMjAwNgQyMDA3BDIwMDgEMjAwOQQyMDEwBDIwMTEEMjAxMgQyMDEzBDIwMTQEMjAxNRUQBDIwMDAEMjAwMQQyMDAyBDIwMDMEMjAwNAQyMDA1BDIwMDYEMjAwNwQyMDA4BDIwMDkEMjAxMAQyMDExBDIwMTIEMjAxMwQyMDE0BDIwMTUUKwMQZ2dnZ2dnZ2dnZ2dnZ2dnZxYBAg9kAgkPEGRkFgECAWQCCw8QDxYCHwVnZBAVBAnor7fpgInmi6kCMDUCMTUCMjUVBAEwAjI4AjI5AjMwFCsDBGdnZ2dkZAIPDxYCHgdWaXNpYmxlZxYCZg9kFgJmD2QWAgIDD2QWAmYPZBYCAgMPFgIfBmcWAmYPZBYCZg9kFgICAQ8PFgYeCFBhZ2VTaXplAhQeEEN1cnJlbnRQYWdlSW5kZXgCAh4LUmVjb3JkY291bnQCL2RkZM%2FO1WQW50DLN7G3eiSyS6q2rewQ&__EVENTVALIDATION=%2FwEWJAKb97l9ArjilMkFApDM2c4FApDMreUCApDMsZgLApDMhT8CkMzp0wgCkMz99gECkMzBrQ4CkMzVwAYCkMz5KQKQzM3MCAL79f%2FVDwL79cOIBAL79devDQL79bvCBQL79Y%2F5AgL79ZOcCwLWm967DgLG9LjWAgLG9LzWAgLG9IDWAgLG9ITWAgLG9IjWAgLG9IzWAgLG9JDWAgLG9NTVAgLG9NjVAgLZ9LTWAgLZ9LjWAgLZ9LzWAgLSx8%2BzDgLMx%2B%2BzDgLMx%2BOzDgLPx4%2BwDgLy%2BZrvCEFw0vATX2wSsTwyj9sMOqdXBRc0&__ASYNCPOST=true&__EVENTARGUMENT=" + pageNo; conn.getOutputStream().write(body.getBytes()); byte[] buff = new byte[4096]; int count; ByteArrayOutputStream out = new ByteArrayOutputStream(4096); InputStream in = conn.getInputStream(); while((count = in.read(buff)) != -1) { out.write(buff, 0, count); } conn.disconnect(); return out.toString("UTF-8"); } } ```
Android ListView重复加载的问题
我建立一个 ListViewView,并重写了自己的 adapter(继承BaseAdapter),数据源是一个ArrayList. ,ArrayList里的数据是 1,2,3。当我初始化 ListView时,显示的是 1,2,3。 以上看起来非常正常,但当我按 后退键,然后重新 进入 ListView的时候,诡异的事情就发生了。。 当我第二次进入 ListView的时候,屏幕上显示的 数据 成了 1,2,3, 1,2,3 . 然后我按下 后退键,再进入 ListView, 屏幕上的 数据 成了 1,2,3, 1,2,3 ,1,2,3 如此循环往复。。总之,每次进入ListView,都得重新读取ArrayList的数据。请问是什么原因导致的呢? 以下是adapter源码 public class chatListAdapter extends BaseAdapter{ private Context context; //运行上下文 private List<Map<String, Object>> listItems; //联系人信息集合 private LayoutInflater listContainer; //视图容器 private boolean[] hasChecked; //记录联系人选中状态 public final class ListItemView{ //自定义控件集合 public TextView RemoteAudio; public TextView LocalAudio; public TextView RemoteId; public TextView LocalId; public TextView MessageType; public ImageView RemoteImage; public ImageView LocalImage; public TextView RemoteSay; public TextView LocalSay; } public chatListAdapter(Context context, List<Map<String, Object>> listItems) { Log.v("construtor", "constructor11"); this.context = context; listContainer = LayoutInflater.from(context); //创建视图容器并设置上下文 this.listItems = listItems; hasChecked = new boolean[getCount()]; } @Override public int getCount() { // TODO Auto-generated method stub return listItems.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup viewGroup) { // TODO Auto-generated method stub Log.v("getview","getview11"); final int selectID = position; ListItemView listItemView = null; listItemView = new ListItemView(); if (convertView == null) { //获取list_item布局文件的视图 convertView = listContainer.inflate(R.layout.chat_list_item, null); //获取控件对象 listItemView.RemoteAudio = (TextView)convertView.findViewById(R.id.RemoteAudio); listItemView.LocalAudio = (TextView)convertView.findViewById(R.id.LocalAudio); listItemView.RemoteId = (TextView)convertView.findViewById(R.id.RemoteId); listItemView.LocalId = (TextView)convertView.findViewById(R.id.LocalId); listItemView.MessageType= (TextView)convertView.findViewById(R.id.MessageType); listItemView.RemoteImage = (ImageView)convertView.findViewById(R.id.RemoteImage); listItemView.LocalImage=(ImageView)convertView.findViewById(R.id.RemoteImage); listItemView.RemoteSay=(TextView)convertView.findViewById(R.id.RemoteSay); listItemView.LocalSay=(TextView)convertView.findViewById(R.id.LocalSay); //设置控件集到convertView convertView.setTag(listItemView); }else{listItemView=(ListItemView)convertView.getTag();} //set rma,lca,mst,rid,lid into invisible //put data from list into view String strPosition=""+position; int RR=0; RR++; Log.v("11aa21","RR"+RR); listItemView.RemoteId.setText((String)listItems.get(position).get("RemoteId")); // String idd=Regist.generateId(); // listItemView.RemoteId.setText(" "+idd+" "); Log.v("11aa21","PositionI"+strPosition); Log.v("RemoteID","Remote+"+(String)listItems.get(position).get("RemoteId")); listItemView.LocalId.setText((String) listItems.get(position).get("LocalId")); Log.v("11aa21","PositionI"+strPosition); Log.v("RemoteID","LocalID+"+(String)listItems.get(position).get("LocalId")); //// listItemView.RemoteAudio.setText((String)listItems.get(position).get("RemoteAudio")); listItemView.LocalAudio.setText((String)listItems.get(position).get("LocalAudio")); //// listItemView.MessageType.setText((String)listItems.get(position).get("MessageType")); /// listItemView.RemoteImage.setBackgroundResource(R.drawable.ic_launcher); listItemView.LocalImage.setBackgroundResource(R.drawable.ic_launcher); /// listItemView.RemoteSay.setText((String)listItems.get(position).get("RemoteSay")); listItemView.LocalSay.setText((String)listItems.get(position).get("LocalSay")); // String idd=Regist.generateId(); // listItemView.LocalSay.setText(idd); // listItemView.RemoteSay.setText("rms"+position); Log.i("tttt","ttttt"+listItemView.LocalSay.getText().toString()); //decide wether Ls,LI,RS,RI invisible //if msgtype=??,then set..invisible,set XX onclick method=?? String MsgType=listItemView.MessageType.getText().toString(); Log.i("msgt",MsgType); if (MsgType.equals("9d")){ Log.v("MsgType", "Text"); listItemView.LocalSay.setVisibility(View.INVISIBLE); listItemView.LocalImage.setVisibility(View.INVISIBLE); listItemView.RemoteSay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.v("1ab",((TextView) v).getText().toString()); Toast.makeText(null, "111",Toast.LENGTH_LONG).show(); } }); } return convertView; } }
请问一下java 调用shell上传linux的问题
package com.wfj.cms.util; import java.io.IOException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import org.apache.log4j.Logger; import org.apache.oro.text.regex.MalformedPatternException; import com.jcraft.jsch.ChannelShell; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.UserInfo; import expect4j.Closure; import expect4j.Expect4j; import expect4j.ExpectState; import expect4j.matches.EofMatch; import expect4j.matches.Match; import expect4j.matches.RegExpMatch; import expect4j.matches.TimeoutMatch; public class Shell { private static Logger log = Logger.getLogger(Shell.class); private Session session; private ChannelShell channel; private static Expect4j expect = null; private static final long defaultTimeOut = 1000; private StringBuffer buffer=new StringBuffer(); public static final int COMMAND_EXECUTION_SUCCESS_OPCODE = -2; public static final String BACKSLASH_R = "\r"; public static final String BACKSLASH_N = "\n"; public static final String COLON_CHAR = ":"; public static String ENTER_CHARACTER = BACKSLASH_R; public static final int SSH_PORT = 22; //正则匹配,用于处理服务器返回的结果 public static String[] linuxPromptRegEx = new String[] { "~]#", "~#", "#", ":~#", "/$", ">" }; public static String[] errorMsg=new String[]{"could not acquire the config lock "}; //ssh服务器的ip地址 private String ip; //ssh服务器的登入端口 private int port; //ssh服务器的登入用户名 private String user; //ssh服务器的登入密码 private String password; public Shell(String ip,int port,String user,String password) { this.ip=ip; this.port=port; this.user=user; this.password=password; expect = getExpect(); } /** * 关闭SSH远程连接 */ public void disconnect(){ if(channel!=null){ channel.disconnect(); } if(session!=null){ session.disconnect(); } } /** * 获取服务器返回的信息 * @return 服务端的执行结果 */ public String getResponse(){ return buffer.toString(); } //获得Expect4j对象,该对用可以往SSH发送命令请求 private Expect4j getExpect() { try { log.debug(String.format("Start logging to %s@%s:%s",user,ip,port)); JSch jsch = new JSch(); session = jsch.getSession(user, ip, port); session.setPassword(password); Hashtable<String, String> config = new Hashtable<String, String>(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); localUserInfo ui = new localUserInfo(); session.setUserInfo(ui); session.connect(); channel = (ChannelShell) session.openChannel("shell"); Expect4j expect = new Expect4j(channel.getInputStream(), channel .getOutputStream()); channel.connect(); log.debug(String.format("Logging to %s@%s:%s successfully!",user,ip,port)); return expect; } catch (Exception ex) { log.error("Connect to "+ip+":"+port+"failed,please check your username and password!"); ex.printStackTrace(); } return null; } /** * 执行配置命令 * @param commands 要执行的命令,为字符数组 * @return 执行是否成功 */ public boolean executeCommands(String[] commands) { //如果expect返回为0,说明登入没有成功 if(expect==null){ return false; } log.debug("----------Running commands are listed as follows:----------"); for(String command:commands){ log.debug(command); } log.debug("----------End----------"); Closure closure = new Closure() { public void run(ExpectState expectState) throws Exception { buffer.append(expectState.getBuffer());// buffer is string // buffer for appending // output of executed // command expectState.exp_continue(); } }; List<Match> lstPattern = new ArrayList<Match>(); String[] regEx = linuxPromptRegEx; if (regEx != null && regEx.length > 0) { synchronized (regEx) { for (String regexElement : regEx) { try { RegExpMatch mat = new RegExpMatch(regexElement, closure); lstPattern.add(mat); } catch (MalformedPatternException e) { return false; } catch (Exception e) { return false; } } lstPattern.add(new EofMatch(new Closure() { // should cause // entire page to be // collected public void run(ExpectState state) { } })); lstPattern.add(new TimeoutMatch(defaultTimeOut, new Closure() { public void run(ExpectState state) { } })); } } try { boolean isSuccess = true; for (String strCmd : commands){ isSuccess = isSuccess(lstPattern, strCmd); } //防止最后一个命令执行不了 isSuccess = !checkResult(expect.expect(lstPattern)); //找不到错误信息标示成功 String response=buffer.toString().toLowerCase(); for(String msg:errorMsg){ if(response.indexOf(msg)>-1){ return false; } } return isSuccess; } catch (Exception ex) { ex.printStackTrace(); return false; } } //检查执行是否成功 private boolean isSuccess(List<Match> objPattern, String strCommandPattern) { try { int result = expect.expect(objPattern); boolean isFailed = checkResult(result); if (!isFailed) { expect.send(strCommandPattern); expect.send("\r"); return true; } return false; } catch (MalformedPatternException ex) { return false; } catch (Exception ex) { return false; } } //检查执行返回的状态 private boolean checkResult(int intRetVal) { if (intRetVal == COMMAND_EXECUTION_SUCCESS_OPCODE) { return true; } return false; } //登入SSH时的控制信息 //设置不提示输入密码、不显示登入信息等 public static class localUserInfo implements UserInfo { String passwd; public String getPassword() { return passwd; } public boolean promptYesNo(String str) { return true; } public String getPassphrase() { return null; } public boolean promptPassphrase(String message) { return true; } public boolean promptPassword(String message) { return true; } public void showMessage(String message) { } } public static void main(String[] orgs) throws IOException, InterruptedException{ String ip = "10.6.1.64"; int port = 22; String user ="tomcat"; String password = "123456"; String cmd[] = {" cd /usr","ls -ls"}; String command = "/home/tomcat"; Shell ssh = new Shell(ip,port,user,password); ssh.executeCommands(cmd); System.out.println(ssh.getResponse()); ssh.disconnect(); } } 最近要做一个sell上传jar包到linux上的程序, 大致的需求是.. 将本地(部署在linux服务器上的系统)的文件上传到一组linux服务器上,(多台服务器) 服务器文件路径都是一样的。 但是要用java写, 以前没弄过关于java 调用shell的。 就从网上找到以上代码,但是新的问题又来了, 不熟悉sell命令。 只会一点简单的。从一台服务器上发布到多台服务器(一台一台的上传) 求大神指点迷津。 小弟谦虚好学。 QQ599159992
求大神指导Android中重写SimpleAdapter类引getCount空指针异常,万分感谢
重写的BaseAdapter: ``` public class MyAdapter extends BaseAdapter { List<UserInfo> userInfos=new ArrayList<UserInfo>(); Context context; public MyAdapter(Context c,List<UserInfo> userInfos) { // TODO Auto-generated constructor stub this.context=c; this.userInfos=userInfos; } public void setcotext(List<UserInfo> userInfos){ this.userInfos=userInfos; } @Override public int getCount() { // TODO Auto-generated method stub return userInfos.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return userInfos.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return userInfos.get(arg0).getId(); } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub if(arg1==null){ arg1=LayoutInflater.from(context).inflate(R.layout.book_item, null); } TextView _context=(TextView) arg1.findViewById(R.id.content); TextView _datetime=(TextView) arg1.findViewById(R.id.datetime); UserInfo u=userInfos.get(arg0); _context.setText(u.getContent()); _datetime.setText(u.getDatetime()); return arg1; } } ``` Activity的: ``` public class MainActivity extends Activity implements OnClickListener{ Button add; Button re; SQLiteDatabase db; ListView listView; MyAdapter adapter; List<UserInfo> liUse; protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); shuaxin(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DbInit(); add=(Button) findViewById(R.id.add); listView=(ListView) findViewById(R.id.lv); registerForContextMenu(listView); adapter=new MyAdapter(this , liUse); listView.setAdapter(adapter); } public List<UserInfo> selectAll(){ List<UserInfo> ls=new ArrayList<UserInfo>(); Cursor cur=db.rawQuery(" select * from user ", null); while (cur.moveToNext()) { UserInfo u = new UserInfo(); u.setId(cur.getInt(cur.getColumnIndex("_id"))); u.setContent(cur.getString(cur.getColumnIndex("content"))); u.setDatetime(cur.getString(cur.getColumnIndex("datetime"))); ls.add(u); } return liUse; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.refresh: shuaxin(); break; case R.id.add: Intent intent=new Intent(this,AddConActivity.class); startActivity(intent); break; default: break; } } public void DbInit(){ DBHelper dbHelper=new DBHelper(this, "Cotext.db", null, 1); db=dbHelper.getWritableDatabase(); } class DBHelper extends SQLiteOpenHelper{ public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss "); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate); arg0.execSQL("create table user ( _id integer primary key autoincrement , datetime text not null , content varchar(100))"); ContentValues cv=new ContentValues(); cv.put("datetime", str); cv.put("content", "测试"); arg0.insert("user", "datetime", cv); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } } private void shuaxin() { liUse=selectAll(); adapter.setcotext(liUse); adapter.notifyDataSetInvalidated(); } } ``` get 和 set : ``` public class UserInfo implements Serializable{ private int id; private String datetime; private String content; public UserInfo() { // TODO Auto-generated constructor stub } public UserInfo(int id,String datetime,String content) { // TODO Auto-generated constructor stub this.setId(id); this.setContent(content); this.setDatetime(datetime); } public UserInfo(String datetime,String content) { // TODO Auto-generated constructor stub this.setContent(content); this.setDatetime(datetime); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getDatetime() { return datetime; } public void setDatetime(String datetime) { this.datetime = datetime; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } 异常 ``` 04-23 16:48:45.585: E/AndroidRuntime(1823): FATAL EXCEPTION: main 04-23 16:48:45.585: E/AndroidRuntime(1823): Process: com.example.notepad, PID: 1823 04-23 16:48:45.585: E/AndroidRuntime(1823): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.notepad/com.example.notepad.MainActivity}: java.lang.NullPointerException 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread.access$800(ActivityThread.java:135) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.os.Handler.dispatchMessage(Handler.java:102) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.os.Looper.loop(Looper.java:136) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread.main(ActivityThread.java:5045) 04-23 16:48:45.585: E/AndroidRuntime(1823): at java.lang.reflect.Method.invokeNative(Native Method) 04-23 16:48:45.585: E/AndroidRuntime(1823): at java.lang.reflect.Method.invoke(Method.java:515) 04-23 16:48:45.585: E/AndroidRuntime(1823): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 04-23 16:48:45.585: E/AndroidRuntime(1823): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 04-23 16:48:45.585: E/AndroidRuntime(1823): at dalvik.system.NativeStart.main(Native Method) 04-23 16:48:45.585: E/AndroidRuntime(1823): Caused by: java.lang.NullPointerException 04-23 16:48:45.585: E/AndroidRuntime(1823): at com.example.notepad.MyAdapter.getCount(MyAdapter.java:29) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.widget.ListView.setAdapter(ListView.java:480) 04-23 16:48:45.585: E/AndroidRuntime(1823): at com.example.notepad.MainActivity.onCreate(MainActivity.java:44) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.Activity.performCreate(Activity.java:5231) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 04-23 16:48:45.585: E/AndroidRuntime(1823): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2163) 04-23 16:48:45.585: E/AndroidRuntime(1823): ... 11 more ```
jsoup抓取dopostback的网页错误 ,是不是BODY出什么问题
package zfcg.ztb; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JxztbActivity { public static void main(String[] args) throws Throwable { for (int i = 1; i <= 3; i++) { System.out.println("test0"+ListData(i)); } } static List<String> ListData(int pageNo) throws Throwable { int table_number=0; Document doc = Jsoup.parse(getListData(pageNo)); Element ele = doc.select("td[height=500]").first(); Elements eles = ele.select("a"); int newclass=0; List<String> result = new ArrayList<String>(eles.size()); for (Element ele2 : eles) { String inittext = ele2.text(); String newsurl = ele2.attr("abs:href"); String newstime = ele2.parent().parent().select("td").last().text(); if (ele2.text().replace("更多信息", "").length() >= 2) { System.out.println("项目名称:"+newclass+":"+inittext); System.out.println("链接:"+newclass+":"+newsurl); System.out.println("招标时间:"+newclass+":"+newstime); } result.add(ele.child(newclass).text()); newclass++; } return result; } static String getListData(int pageNo) throws Throwable { int table_number=0; URL url = new URL("http://ggzy.jiangxi.gov.cn/jxzbw/jyxx/002004/002004001/MoreInfo.aspx?CategoryNum=002004001"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"); conn.setDoInput(true); conn.setDoOutput(true); conn.connect(); String body = "__CSRFTOKEN=%2FwEFJDZiZTk0MWFhLWQyOTItNDM5My1hYTZhLTliZTQxZjJmNTQ3Zg%3D%3D&__EVENTTARGET=MoreInfoList1%24Pager&__VIEWSTATE=R8GA6T%2FIFGHg0Gb6XTFK3FRWaT%2BnnifWmbfVtNOsNxO8aGNCF9BvV0HlGq0NCTtFJ9Z%2FOB0SJrX5ocfMmneceh63ACvs4tmktSDuFT%2BQ%2Fj2UdQTyQH9sF1LqsGpBpaBMRI5ihQzcPnaoZSOI5y4wAcCT2eSyOIAJLzDfEahy8vHcO4rY5X1OgnRqUbqhAGYgciiDdJzOwhBLhOtH6KpEt6GD0PCWIYpVFGwufdKPRpBoyvMvVLxns62e4opbzTrVK2mOGWLS%2FF9b3YqhnYe2eTEllzjFQdzl7hJb%2FjB%2F46YVl9ABjjLZ3ZCw%2B28bT805n3aL8nlrByAuHCArCYh%2F2rD7hA52KBZ0WDP6AgnR%2Bw7TDhCchpWEvukASBok8AyUK%2B7Zx6JztNgDXcsn%2BzpcoMqr40%2BlnDwG1aoJIQ4y%2F%2BTLjieFXqu0cIcteyE6fCByvda3M7Drq%2Bzttil8VbGD1QQOPAeNnNSa3MBdqRsgh6BzfhD3LlqtCVPc3p5bukA4JaUCBdw0U9jaULfcXz8V0zBElOQUmOvTm5nMc%2FDp2clYlEhHNZ3w1%2BJwWgFwhSX%2BFcugoXQBMmsAexF9ibA%2FcMQ87Rl1aP4e%2Fcj%2B%2FHzBF%2Bpkh03mr%2BlsSkFN%2BDSEleVQ6hD0i7SToPdSAATi5bvVl96tXl7y8cI%2B7dHeqZiGV7cxcue1xuAzVbTfm3IrqlEtWS4ol8%2FAXmF7CUIRLKFayFsLgVDBfq%2FuHl0lxfv5L6yZyXvLoXDa41Mzwa812VHnwyYwNVRrdalfcbketek1F5nHFkeeaRNn9JEFIFsIyBKUx12p9P1E%2B%2B3MBkdiK3o%2BRwywLHwNJuWS%2Fi3U362Unj2nuQxyFndOBF%2FeHr%2Fby8jnLaZNWeLJjy578rRlYB1ggnM4qmuNwQqKBP0%2Biqa7mRKZlMsr8y7bq%2FKnO4%2BJcUyzNh2WeQnQlMT%2BRsWfgOIf3U6%2FxNgNNkwcJxggQao6AO1Jptj8JHJQXa9nu4Tu1dgR885Mexnueg5eMppcBP3fnIGE65%2Fd6ZBhww0f6rL%2B2IdLV9XEUgVvT8sED7eaNlLJymFQ8EkSZXfl0TTuZFezfXouhqaEvR5HMGlE5USdIfphpRH3fg4KXma6WtfxWtAHpqVZKmA9ii6JzLluqbvifl7Q4lGGNbXDi3FtdVUegXncyFoQ1tQoXigUVhOgq0wbe5xim918qTLP6nNC%2BFDiyg09JmFj98wgpAhmLA2bvlfci1jaFWMy5hEYz%2BP5OAbERPOaVkH8PLmXcdrJ9RCPf8rxLLQE7ReKs5NSTrwdVHe3MSTn8cartsPfiD8LejzyTduW5gHO6uCj0SFAOz9CsBspqlEyVT5AXACrDswjg169gPOtQ%2Fq5kipvk5Gn18Np3uMMFXgKYnNDfiJzUO2%2FEA36pEzcHj1DP%2BTiW5N7tcWln3ewRJ23Y6gXFD%2BlAX6OdMWKOEZdbtmJ%2B1a%2BvFhFXGGQverFGOPaGQp1hhWe9XB5wvHngNka6mkw9%2BuWcM%2BMZn1KxdM6wE%2BzvMYVjEL8K12JX6b38xqQRF3NOFR%2BzC4lvKzwaMyxGmH7g8S9wqt218PbVFEIEtNZH1oCxgI63%2BlQn5G%2FnfqIbk1FE0eu0HeQGvfMCxC9%2FS4%2FSEzYowgsOiHcNlZjAm%2FRPVpQqTvfuXGVHnEgjsKxnQxMB1EaHRXUa0rAZrJ7juFLurRin8QH6945EaXIJ8S1Hx84dotDj5FngVEYK6NqyvKlUixbs4H4Kz92vI49uyJXxLtEGOJ2ZCuVIzcE%2BBNDEFBMvd5qVbiIUqxw72qGUUHPZKYm10KxR10FtS1YGtRTEHLTlr5G0dAPa3sel9kYAjQyXTNFrkcWULeErpdyErVB3jSbAwPmujnu8hfDHCV%2BrzYnVy5L9Mmxk3pSNPuH1Vu9v8UY8CCD4TWc55U1iQr9Rh%2B2UricncYaG7AyWbPs9RcF2b6gRzNTPZNilWTvZZhIpo3hMbACfryhaJC%2F32FF0M7XgmsfgXe1Ir2hY0JjiIItKbnMgO64hJRJUUnM2ViHKQzorMq7GBL%2F47p%2F%2FV60VPNxovQ0KFLdjDlVwXsZspCEZyCiD0H3e6wNDrgKQnWJumoRmii%2F%2FJsO4MV5XZyb6CpWDTW1Kam%2FgveKxPC7VfajOxnYz63kA1Xn46IPsAqZENBgMR7gPOfbKAYuM9YXyxAyYAl9g6Y2ceXK8HqpWqjAXMCmk%2FOL8Ny03HLvg1lTth6Y2dYxEpRw05h9%2B0MmAvrEUZdzCVvlw3BTqlis3NBFXvXvDAQf5%2BH2A8allFp2SBAUNVeakknNQDiqdvewMMbG5Tubw9fp7UzbJbR2wihx4OWReiztXdJyRasdoUUwI0LXMWQgKLyaIc3UT9uzISnbinlcfNwUrjDlKl3BIeuduSnIV4mXE5S1K0OREcXIuLL5Vn2h9TSoCxquOWmsC42kF8mqWPXL2zLE7wTUJcwDD4ru4Qmozz6jJppayfGeId%2BeZN6owQF1k1im37PSftJhv3IP37vasnuAsRF3BQt8tMU5ue1IXmZzgufvxafd8FWD08L0RnKrhbEKGBmZ0dmEWTczG3a0078owGsAcw4M6E3kWlxAMm68EfQNtkRLZ5On%2FyHQfhQsrl0TF3cW9eAVv1ii3lZmgmVTafb%2FJLX%2BRz5BjpzBwiKHLbnrrm0edokZ%2Bqc9CRvhMSiM6lBH%2BIcPRRB8bE711N5Z%2B0nR174rTn2KvUmLXFIpqY0jG4PLDcompSsTFzHQ5KA7qlM%2BxLOOegYMN%2F0imSXqPLOyj7Uyrd9%2F93xtq58NCfGPd9rSO4Kb10nPMEyhwDOLy0mmYOiV71Z5Nl5CDaWkXRtl8U7gqgGjiFpvcvrEl80gQayaKyMFFSC4y4oYDOkMhrs7tuow%2B6yo%2BWw4yj392%2FBciTvdS2N7WA2U5oDZlFYbKBGE3zpKbAIkSlr6AKO7BMbQzoHXY4Gvpu3tmrrPGT3HlvkYe1URZJIjas%2FcJsFV%2Bxo4EXffAcE48vYf1Df9QDvOp42hhhu6oqcSPo23S6u36hER2rXhSBvAwPGAEgl5A8z6J%2Bi2%2FM485Kgn%2FSYbf3JhX8Uk%2FskKK9XVkDDy76MVBEHSGq9hcHHUK%2Bc1UCTEdCx4XGfG0x%2FKnqXKZVacC%2Flj0ovGzglJ7dZoE05AGVCJG9ySkznToPYeB2rTja2PVCIk%2BimzAjfEmT6TmHSnXu%2F1%2BP%2FjU7jjWjHj7gBpp%2FBAh8fyWczEpDoWJjfEmDf25hbM%2Bsc%2BPl4DsDmlBz6gR3L03waT5GuCpr1jNFUJTpHknF0t9kduDKZ5PsB%2FDUNeHtZXzbQWZYmifYYKlL45nRI%2FtJ0LoGUOEiAK38wrEDmtXBujhhQDDXBe7%2FcvZ8fbxVUNwvu49TWNH69sHsHkMkvWqyO%2FfQtC8MP5xGsRabOBgh6IcPIS50oQ9jXeNmnKjItDfK3lfEdeuLT8MnTyjFg02zOku8UPqBQXzXxfshH219tdbppzB1kqj0EsQm61iVD4%2BfkEMli0Dlf2Lgt1ifkA761c6nvrFOWlXS79W%2FjOBNQzgCfjkxmvKlRmYgJ7ssMvf%2FazLJJzbAyhiihN%2FlZ9yxqnOJZsDc5xdu7V2hqz9KUzXKp4%2Fi%2BIWuCY7ypDLPYTLtpFOiDyA79UaBwZsN7b8uYAIkv5OQbKY%2BFrcyKfZBgxTVm4PS9nAP7Oha1FKZ3P3D2D1WZBCbcrZhSlJwptgx5kFAi7vLQh%2B3waKKdbI0eDgr2Fa5pc5LUPPeaBYB6oxKYjAiX78wm2XY6tspPvPa61Wr88rRmqnS5v39jVcjPyWnAa%2FRSxLLVjYwcSVciMJ07rIZkNSMdCMFcHy1Yj1bf3EiBteG6HT1FEpLHH18yA6KFlUBwPgcMwQRyQUGJfXvXF%2BBPjDS6pYaKIGxemX0OYj4nbGvw3%2FoKfll%2Bmj7v8JFKBOlHxGNC57aJKsmJiYvi5EZLfP7TamucSZDqZDlvO5YdfQ9kmAbdbn2aVP80hdycVtoNoezU58UG26cQ08pRXq5usaSG9c%2FMrH5DA06NVHwtnn7V5GVMYvG51S5vg81UpOUOZ7GtVWqQPmSREIC5zLnz%2BWhfcKpJD3%2BBqE%2BbvGExa7n5DUZQOZXIkpairuJAiAYNnzkrEOX98OVUjCAtwrF%2B22oAqzoYmu6Z5T1fevCGqpEPk9c5xhYKJMgfAzCtE5BMAgVaCfX9RqCpaUx4d%2BiSoqRE32%2B32rgBMefkkE%2B4CtTcQPdjKZEV21s4G%2BAeWThGT4BuxEaQ394v0FY7bROLY8hcTMSiAGvZhhCJQSLXbUbf%2FKTfn1FmkQaIrIXglb3fofqqNKonGG6rJlCrJhIxAOKDziyblQEzxerKwMka87VrJYB3WjB%2BycQkN5gcyMWOWWZEK0vc%2B7amwF5jXHX1KPezbjJV9JqsrofqkGRBUX9bwIjPE3ele8vyJ3BbYEJPLW7Cx%2Fg%2BMtKyvsbpa2gS5d9Psx6Tm1h2%2FfgjI09%2FxBhMDWRW%2BLZMHpwrcY2MaLLNmIR0dkl%2BvXoDvvrKoAABx8RPyWUZKa4UE5mgvJmeAi2dYso2i1yRnrCM4inirsuDvdPAjc6kNeKe%2F0JGT2TuQbcpPtSrdtu%2FyuGsI6%2FIyeOtq8mGyoPaNUSrCiQVrt7Uw4aJcRRr8qLpkJNACL87mcbT65gjkujII45IYiBE%2B9vykoLbtaI36K6suSoXiSgw6%2BQisRYgCkU%2BQWGaeeVomL%2Bv3REKxSBJN47BHceC869XdhI4aqm0hPRi1tA9UVd4UeftEE8vv4OLNRvq%2B8%2FzZndsUCUnit9IAFV450VclUsQPyFDxZbwGFnNarIF45fZu1rrQwUxA9rQvpnrQkSiN4CCA05gqbRajvMBw%2Fu2OhfXZsL2tFySJKesS%2BwUeRNSqDwysLZRUQ8W08VC4gTKWSYZbTuN0egLlJr7HnVeMFpFyhz8guxnwZbQi6vjOGW62PLK1bgwcEoZGMcPHoGZ43qCiNJ00xz7Gggjux%2B%2BRvwrolKnr1sYg3%2BwCPAx6M9vg766KzOc%2BOckrFF%2FW6sJK63DWXhwFuzbpsQZWE9WaRgoNaKoNMQM6InBOYZuDlw78a2yUCWuFDfdj1kWTUHTYtFc3svCOscM5oPPdERLoATn93o%2FHMex4oTj0ilUowq9LmWB%2FxGUCSjsCg2FJdS1F65fgIQJrTdMSpHxGjU%2BKyFIHa7vGG1KXwom%2BN7k%2Fl8eA4CN1F0jIBbU%2FBQkFPkBrkZ1UT9jJvXHAT4JdR8z9hr6PsWXsqv0v6Uofowi6q9vfpgAna4gxBbq19BYFbK7HD%2FvfdAOviQX9V9eOIUWY6drovP6lWFCnINiuTNeJ9s6QoKsvV17KsdFHhQNrSIHxDZ7GydlPXakgyXZXKgmqVYGkMDtDfoY5dsCwbtoIgbv5Docg7ocxWmfR9Md8%2BeFZgnMWZAFxW5sX7roM6pve5Ytc1VQLahIoDgHjSAktsQ9rJwj87I3%2F5WT6nrk7pYcrudA%2FzCiU0Y6URm4SJ7kZ3iWLYKAXzL1j4GB1K0tuIrC4xmB78SgBzD0wTZ%2BCoiAwypXpHkeZ2X7UpZgJO%2FSDjL4Lc9sRi1L5KZOcr071h8OyEww8U5UmzD5zELm0lG%2BrBUAKkudP45QnxWg%2Fn0YJYexZh8E0%2BHMbThaoCy5o1vi9etqE2s9k7OeBihts8sFz3M7GAGs%2BQ7gBNJnrREpQwRK%2F8Wj9qnUuP5m4sfPbHB6hQWJDQxhDaqOo70eWocSUsLDURgi7AhpNgasaGIOe2haehDVR0CZvadbVVyZxdHl9sAh97Hcs%2Fo0s77vurK%2F0zmMiKEzlPqO7gi5FVHW0exZMFTG52ZFA7EluyAZJDljEBMEwJbSbAmw09ePtmEucqLnU%2Bh1Aq3vvAXBpQMwkLCaQ0xR52OljWVGC%2Fo35LTfprXfUOKW1H4KB75rGlaJXLR9l90irw3pA2C2rl1Lh9qjsyjcK9sb188Nx%2Fwqj74%2FHl7KC2Qti8TXj0YD0hllXQftwZAXEqefSdNOcnoWNsdtGh8ipphVChQXRUSh6iuLF8yaLQDyyNsHdunUpmHdxGKxfO70Q%2FJwS3BYE1NY3nJKiEe64C53Nhkulavm8JU2MApzc4WaHTwsA9xtgqvJHb%2F1DukzFyRyJpj3WvNdNyY%2BSI2UYKp4JPr0okpoPKstcQN%2Bjnf2xndS4zm6Va1nrR9%2B9RJNAMbEF5H0TxLBxo5jQDg1f7VYhZzGPCnU%2B8eVYGI0j95KLthUWfTJgPGiquTfhlefVOW7rrDK7sr9rynj6OLhNeKvC%2F5VDCIF8JlI0FslDAEoWDAq9JEUmb%2BtaSjoR2A1CEbVcD7RGx4w96eJb3JZ269eq7qPNIcdBsdybPNJhPclIprNnrEnn5AnXBVZ1SnOFHLhKMeK61KvkmZOa6hy%2FLzEvC2s87%2BeLji5aR1ibtG3DXQUP%2FZFdQ1zdNZjjeKgfeIC4Uc9R%2B3Sim1wB%2FA%2Fgz3QGrOQnLfhWLNESHWEkwVESH7fMkj3Uf9msFnYD6tgMieBPHNNvaFqW46CTZ2nJ6HdcPQZqycNhec%2BpxK4GRxMtXkolKAcJxoITr4up0Vgig9qkeDMHFG2fPiwrd3j%2B2x7N4p4xd6IxoDiMni5q0iu3o6KuHVwIdxQImGsPPQwebyvzbsG%2FHqr1hZy6WdkbL%2BmOeClujFHKdhvDLDykfpoTL6jHcjqKUnncIGixbjSkNRLugpadA5JTdeX8uMry3NcB0o0rdhNBrbEiq8Im4eaTsPbQUH8A8IG3ByZmzn3yBmSMx4vrZsp2mFRBIW4FSvsX1bVhDX2AsPkxQh6FiqyO4LwNTDf%2BM6vhfaOdXcI2%2FTqWuirFyMOiF7NOXYH1jwrxJNeHFyGv0D143HcVAsfYFbQuo7JhTQEfzH7sJtqp5ji7wk%2BGbodgr184lcMKBO9i4hvNzuDgeeZ4z187zol30b3qGcxJVgseTVs9R4r8GAEnQTu43VfEvxD1X4%2BACXwgfBp%2BbMsFgo1nV%2FMVnoaXnBawJz0Azmw3u463%2FA1oePsVONDNxwJMTIgyjt35L2unuczFJXfhl6u0JwdyX0NzRklj0fCEGA2pLGH%2BO%2FooEP8hpjq0yusZupAHC8Y99RfqcRCu3duTgdGvQULfZYgQT%2FdzJJSjqFrrMtugp1P3zQXkBioENxaDytQ97LdI90qVJvfSRQRNjeJy79z6GNB%2FUKmBtdRstFEW%2Fm9SEv2FaNNi0a32DyEWv2FexTbY32SKxWLJIIXflG89qNGiZscet4H%2FgQnew4hd2TZJA1J1ISbc3z1NFXNBoqZOncWkur5lQtRRbokZgeM15WPNRK9m6tAaz5gdiVHLzQwQKcu42hfeP0zbJ5jLI52LWrksNecpzrLXtun0MJl0fmSj%2B0my1ppCej8pmoi%2BvnTTaLQ%2BhMO9gamCa4pn1MGbmOGVUMAbk3e0i%2F%2BoFpSF%2FzdrxPEu7ut9SE01QE6q%2BD2LRypVWPgBN8wBOtnxqP7o7okmssRJ6M8jsv3GxmSPMGKsAZ1fsAG3dzlCEW8ukF0Vu%2B1EZLF8r%2BJFwrDiPyfxTydr4%2F3V5mm91qfQ9EyuTb8sr9RT1Unnp%2BDx2LvoiCiRJK87oD9RO40KsKQWwNlPKfOI33Bs6S6U43SftVz6cAMSG3vIWgriacCqhioATPpt3NvbaFBXdZFZaTVeP3R1TPjoNHoqXY7OKTz7oIIvpxVvOuUXdfaC96%2BvPBV2dRzLHEZaoXrXnCMcc%2FOuEsBVn1hhyvGZy5Arhl6spK2Jd4h8h6EpCVlf4Df1JfDvAcbW%2BY4vrpA7J7z53K8Bf639OT421XZDkSwLJrLbwUdT9aOs50wDPM5a5tR15q4uxgDbKfoFSjgLQqCEQHuzkBuHvmlF6IkmN%2Bic0gVvL5iZRjK3D4lAW3X6VvHwiu1rYlfWOhRKsQCNiFFEVmgKVekcnaxnjEHylAqt%2FMm%2F28XjxKcN5xuGzJCrNK%2BmnT%2BJxGLuKnj3NlVh2tXm0o9cwiIvdK5hViOONrWuSCWifxHpsv2pSLFlG56I7o9P4k6C4i9%2BGgL%2BHgFlA3X%2BXOgg417IOPIIAebZT7EvLnez35bb0hcl8Kh0h1RUOvnKdEX%2FOyHDLtv06mS6EfLC22ZlUzY3I1yOnkBQSFiH%2BHPE6ZFQFGiYi%2FueWdTItMvh8YwOI2XI5eEjwOrh8ZbPl1E1rrV%2FwgG%2FqcjMph1NSZGlT2c%2Fk3GjlalurLa3sYoxLtAzjDNNE079FfdjRvi%2BVBocq%2FJq58CIfs5S4msNSbhWT5blI7YMA3w%2FmtZZQXZX4uQzK60cGEPsRY0fhSQm%2Frz3q9dV7CO%2FJSbqUkjmtvW6a65MWOcDfbA0ou5i4357p7vNF21NlYQldXYAbSVWXL5H%2FFngmpjfQD7agnctcICbQWLF030FiZnMVsMwYzATGn090oj3u0RXAS0KPpqxyHpxchYFXcRAS0Y94GVQhv7plpOLOj6DqrlwFAoz1%2B3jPcPVrhAyF42CtpXpXMKhlHo4Uv2jWpR9OjaDLFZlTlc%2BeEbM7%2BWPF7hZQewTPoUpfMkzGo61Awc97stEsU0nIjqFBUTEj%2B%2BQVvoLm10po75Vi9LOPKZbsNVHoFJRJ4ySb3GDF9IiLxsjBwOVNyv7UWHDvtCKI02tsqCbM9V169jJNQxRlysg1O6qO%2Ftkg5Ci0L%2FFxqwssQL%2BmTkHPTEysb10nQjynAuvpkGsv0RCwSpX8seS04p8IvIEdhfncsqSMkmuDhN%2FXdu9os5RF2dPsCh1bJPzCJEtVsVQV7l209jeUMCfIWW1RObkWN5ZWURKrv1T0pk816dvl207xpyOSTzcJw7abDJJqq9nu9aT%2BxO2Ew7rnEHGHDoHbILjo2gCVbMZ1nxeMdFsr6kMW9c5Ilj2tiISyd4fKon47Oz5Qz48KJwsHN374kwxB2j0dCMOWMyckT4Dfq5PCt%2FovjV2Xwnz9e9r%2Bo2yB0V0U%2B4hSUWQD%2BsYT9G%2Fv%2Fh%2BTQ5LAC3ylUp8N%2FQ5B9ZuQt0MtaQCFzAGhAw7jCEJo6M8Stn2v8fICR%2FdwwWKYjXa6vHYdCiAWY6b4lN6CAuEdbPr%2ByGPSoSkIg%2FbzPE8dYqqLocyf2689E3LeyTJnpVeZAxBZ3UXiGLBgetDM11w4nZoYaeYEdObtzYHa2gotPoZuGrucLUhKH3AYo1MZfWeY%2B2M8ny%2BZMhk4Pj23j3r4D0DsGB8fpLTE2qxAr%2FaL03Q8CLofiRlgqkdPSf6YVm6PRS3DwyepHOMsv9FoNMwSVEbcLlci3E3SrDCKyiSCn%2FMLkiqpw3GTeDFY38ViypHMnmA%2BFVjRbfy%2BmVicHIa5c%2B5%2B0wJOOI0ihy%2FO%2FHYPUQ5ejGUQOSwdlERolwrkXSo8XE74XOrH79IOVtD8hLp7a1DNw4HqxqmqJG4elQNbjhKxerl1cce%2F5R01EbPK%2B0NBr%2FkZ65K%2By70aSTwsFy%2F1QixRefwWfH0D6nOCvE6kKau4bE2Si1OL%2FK3IJUcyImEYzjVDhhFepWfgSggxtPL01kJ0PrtjAiVjjQloF1edXPRV%2BJ2lZN%2Bzw9TctjdZOQqsH3RxhxtTk3KqFaVNHWSoCvSsiJYEcZpSNYRsw06k7dmh8cNvYhr0GMupoklYLS63nYF3VYnFVIB0p6FF9koP4yefjIOA9sdSkLllL5BHl%2Fj16%2BvVpzgv%2Beb3zuPpEMKGGJmrKIpuJXvNNJJJHXJpvD2T3U2Df1IXm1T4Q%2Febj4GOOsUHwmbQQMeEfNEjenCnEaRarDqKmzqtjSYJ4Dka8oiW7PrXXC9ZOpcl8exdLXNxXnIorOpFPvh9AuLZjxAz5oPH3PqUGRV%2Fx8ov5mC5ffR68Fg0ZL8UFOdk0PQNJxgznSteDD40d34wIvVBQhY7euKxfmMOjXQALCRmQ%2F1fBv7JMD8ItbTprjtYJdrOb%2FdZ%2BDWXtpkvTl6fFR6vH9kA0r2napqxgYr4XlKp5B%2FhbzQChYm1oB0YQJL8c61h91b2bspSzGBjc75JLiG1uIP5nD4MWLNpTLFuVh6g%2BoaETjG2phvRhyCwxoBEtUHWC1PtHlv1PKyYdfVARag510x1wtEgnKd1AJQfP3w%2FfO0oQlz5ImsHg%2FHcDnvlIP6zgdmKftURwNYbWQHWFIxScAez%2FqM%2Bg9l5qgV4QWGwl1viWg7iHhLPzo40eurcjroqw3kharlIWlfl4im3duI7KeCqkFdio%2B0yPgcbnAQEbSbsGbxfwSzaEtscnJEqbxHFzq7CL5JlNNCBEapnGT2Juu6wJp2WJhvuY12%2BHOzrzfAFBcsqk1CEct5UyJN2sa9zATOgxLtjKWqujYnAaKWeNXBqZn3baLZuq6jC1f6zT2taC8CIHHSEPb8uRD2LEZ5gd%2BiLewl%2BGzKo%2BibvZAgSCQH3ZTwW39IgklVDC2FYdo5192QQBjLhT2QpJsQgbHSrV3qlxbSqaiSNrbcO9k00qSqtShK%2FHl768l4tjSOoyD%2FZqI9aIkuOhpENJEoe9ueaQUrhTN1EF140KOvth%2B8%2BcXGyNK83ayWjI23dKSe2mcGfRXS4SGUKo3wVXxJbOGAQXGmeUJnxQyvCQqo2afnL609%2Fnr3l0XCOSHOzDlEA%2Frz187z7WfblEqCCgUQluVa3%2FcftNx09RlJ3hlra6T%2FUS81g4Qh%2F%2BN9mH%2FHRmJNRmN9KvmIgECCMhn0WUEPR1IfE%2BUA2s9rABW3RxeudiKmWkCx3EWg5cK3wxWVJ00xLu%2FHF13z3fuvnGuCufE9FWbmU9%2FclCFhws%2BdR50pIjCFr9dhLuPAZvXwZhScYqxD9WI4kt2OqPygvv6kVLSxF4clj5dR6sUUcb3RKOWzbsHYX%2BodwsG%2F265wpvroV246F7Au2L%2F0iqEvwxdCu%2Bm7poZkxeB0SQB6DIn6pfn8impx4%2FnAwL97Ln1ZY0YmgJR3AJXTd%2Fq2UXfw0XIjsoJO%2BwvRreGC8P03sLC%2BnjVB%2Bnmypjysejrb3XSrryZftfmYhQJXUeT8wn7SVUk%2FNq9d248rQRJrr2370y1eDcAcpl7uHbJPltHwjS1PL2pTUUSTo0nhIi4KW1bRHqZ5sTCfv3TVPMN68WgjAu0g4P2Pho1KQzBcAxmchFy992wlZuFLXvIiMoIoAaO4OYWxEBVIbI7ra1Bwow8xpIDu03ePqBUnu4VH3tTL5kZK12e4i6iYWxAxCvOTEBJtOqjcaIZLqGygTb6ZBOJY1R6G3tFSHxBkPqNkes62DYWjwEkPomNl2azNMoyqhCb9fn9Oj5kv4LJBA7Y5NPgDsnl0Sdm6tXsYu5C8Tum%2BT5lQV6%2F5iq0y1eXPZ4GbJkwGwUxNl208RBLc5Q4%2Fn3Yk246uBoeHKLJeriav9WTqODCvSsmu4rJzCBFu8Bo1BWox60XcijvXcOEZveedfIm4OK0%2F70R%2F5IojwDz3V82HpBdsHHLbDQzdY3ME%2B3nR4jIo1A0h95YlnNYEgimBiQ8kxL7261d3tcfxSD3V8dOs9IFXRTSCPNOyJQ94ocyV6cygERuHkKa57SudKIZj%2F3G2AQmE3X34waF8YD2NhnCBwhqmJI12AF%2BLRodmzvRCxWhxrnMRNuheg%2Bq5x3MOYH4CJuSMHKlUElUV7rr8SjaqjG4cnRBpkltVt7NTlOx%2FIToLtbMevaO2Yv4TfwxjQSpmK03QQQzu7JuP%2F%2F1keKqeK%2FLPg9vGXSHTeA7oeJq429nvS20EGdJXUXmL7sSlNOGe3Sf%2BzQBPIrVg0XKV02SNoB%2Ftt5vUBLtNLSUlLbtc7m1kQs9vBrcGWw%2BF2b7oTOk7F6uh2Ddxsxu9fgePBqk8TtWXzaHYCNK9rmS8cMFB3CkYpoTOYxgzJN4EuDDr79BUtBbi%2BlhXMh8YJxcq8SazgW%2FlEyc%2F7REEieNk%2BTx4We9X6DGPaiHVDhneqUqccUVlizzG%2BTeKfHtFD0w7X7BVjgZuhOMTqZHrKsaCtm3Vo1Pz29vvNX3xIv6AXJREpcoBzHkveqXYPm8tk6FfPT0yMsGKPw35poG5xgAfnklA6hT9oaRyrFtETPIfdK6SNo7aPPO9oBEHdyZUQX4TDbSOWjW%2B50uuAi443FouLG1bSrR98y0U74p1Gp9M9dXgCiS8ER5rrq5s6PDihsp7F8QwvkhN0A13Nu0WVwDaWKT2ddjcGJOTC6kBnZI%2BnFkiCM7aO83YOfogXFYUjWsCYoySCEiZtUDqbydq7c7T7aSO8sGvaK5I%2FHujPI9zxD7AM%2Bufi1ObtMQOMy1jHjDiD%2FM3B6%2BOMo2z%2F4dWADO6LeCAau4TIqo8eU6QGq9Bfn9kUYWI4qWxysZo4IMfyGPV34VsAIbArIflS6Me7jgcjDVCfuNGfztiOzVsXpH1B0%2BXOLV4aGKE4VGmUGGdjRpAfuluzMqr2o6u%2B6OVEVjo2nZvyqE6dj%2BsGQAuCzOrCjixbf%2BaZuXhYJQ4M7a4x2arMwKPq6rm%2BLeAbl9gu0eSHm%2BUfTOcY0F3cvtr9iVscdqNMZV7UtQ3dRv8EtRRbmfvluxSpEvaDmUK7%2F5xu9kyXJ3KuahVYzacZxSbjPu66Uo3fSl7SVJA7GJUAoVzTwOfRYVSSMOlZeqTN%2BAxXoVosJ2iedgJ5aFPmWkOwfHERscFKWnDVdVYxJWBDVm6QOG1qhFWsKiqn8w%2BmLwaFfuAz4mcSBvAQJ6BIpb6ma9mB%2FlzONvEMBS2zQNNguSpXmR94uDGFfBjPNl%2BWoIoRVAxQha2F8sshaz8xqU4KGzNN6nIPZuOPNTC0KCCoXLjSpqBGy42787VviEsrE1Ytx0xgv%2FybxChwxawacs5EX2B2qjzgC2blIvjXpcdCvpz4jUUtFHDTvAxEgpOHEDTEk3j0ixSv2qPCFNT%2Fm6AxlqJRy1R6xTNGXc0D3PtUbRw09T6XQifw%2BaDQ8nqdV%2Fct2Mnga7pwOcHYn%2Bw%2Beilv5i3WaFUPcO40KXxtHkF%2BfVwIdQ9M4%2BQvyGAZndYKwVHpSTv0n5vV9Hlg7TROLbREiXV2Y7ZQzzcozFMH8Hp0wWtcmPjfBNaOrKWd8583Mp9slsgX62oKKv3KJ4HFQYDUwEFVHhm8MM9PRHXuxe5fNge8Grs7p2v5Ny5N0KPuzWYjvHDiCSMkyDTnu%2F1CluYxZspWBhmWSgf%2BWQJlen5rrwrM9cLzMW%2B9xHsPDiYWq402vJcwTmwhBdMmEIt6hsoeVqq5tft5yLUmvRDB5uPeRrFvq07vZHHbpsoODeFuf7uLhoTXJ2jl8exD%2FMGLka3%2BnqBeFb1Gt7c7O%2FXYlAxHQf33J1nfhny57yKJ7Dws7Si0o6hWRgEXXj4VrarJK6uoy5rEcb8lixQfc4eg1kp3VM47D8pFGQvQosm3Fj2HbowXtot2m%2Fb%2Fw57FM4wTVhzYXUR9IoYVseLQmpuuSsu340uV3vSvZPvTSLcw1HVF%2FhnJfH5br26L6Vz5OUlPF5PBXBn3nK4H7vEUyv8kfkmVIQdOksLHEz0tJkkzbeQ7%2FGup7VwjurhMgI6LowUQad4XoX%2FCGyG4xH995bkmihy2QXpp0lxZKYAUR4AkkV0WPKdhFS4O%2BIs2Opzxj9KX85J%2BFmLOtWDtUyE5QBQI9XolsP7MIMZzBh%2FmfpmAwq07N0rUy%2Fmb%2BL%2Fi2bkS3AN0TfATcprrGlFbnlizVqQDE%2FcECVXxcys%2BsJBMbnuxqpmC6K43ZY%2BWFGYJOcr5XmjMXv51%2FdSke%2F5NTNqDdAQtRcDGCyOw0IQ%2FeJYF8LxU2MSLbjBdso%2Brj3oNdKHgaQaaU4yohSE1aUCuPX2rWhNtKjx7gjZRtXOUK9RUga3H%2FqWnqcEEiHUQFHXerqdqsb7xthkLqpenME4xBqatQjp67IoQ2HTREEO%2Fm3ZMdu5hMt%2FfQhY50ifD8PA8ex1%2BIFKn3pJya1rmc4TUVRpmLAkuTsatZihSXPWzcWwQllw9ZyM1eea8HDGUlV7JdAhuwOp%2BFS13GNKE4JXFu5JWjHTAoakiqh3PYdef5ZbA%2FYthLo0iaqlGokoG%2FoXIMkKqhOWTK8GKWrtfuzpiGVdJHgbtYZpKC8RAGXqRVTTeUNpeuq1%2FQDCnEXnSylVn4qAVlvO4cmxLHYHTlbMOLeurZDkc6X49SUZnbdHgWWsAgK3X1UqiWXrntj0U6EevkyujJNHlA9lgcAK1FWywrct%2FhRzNQN6G4zxLayxd0xCzuHFg4IRBK8OSaMIsu6fMemjeCMooJbKlJK7984iOOj%2BKk8Hg4hd03ws5A84dmGP7DFPTRFChHtt9C%2FOynKrQaZPP2s75Hf33PC3hbkp3lpv3lvu%2FDhhM70gKKtEhgB%2FUfHB3o2iCZJ2vfGRG%2Boa9hH4rYgSNhKy%2FdjCLWguPWsuE39pJkO61JpueK4%2BytKDiMzi2XDylhZgozEnoft3k%2BQPJKo7Vi5tYABMaViNdJUHnmjKjItfasoyJoDg%2FKXduuPLCA1aTYcveSkE2QqeqVA9Tx1JD2PDanU7UjTSNGLRJKi%2F0nZ7bLs0t3rKnQFossCaGc747BDkBdT0ImFgi%2BCjnI4ASSAetR%2FndYAfVaXOD2eKsE%2F0T6RT57jhJ8sxFvG86us2RKb0oSdU5KcbQovb1R8bDb12lLgriXuSz7THaWXTl56riFgUmzJ9vvmOYqibWWs%2Bb6yNkJO9pIdgSW526gBDd%2BnB9lqEtMph%2FaRcwMBLdIwzpXHhG6Y0b0DzQAlbY0mh7r91OyzduaFxCVrl4y62rOVY4iCUr7g7kl%2FsWJDsQYEF%2FI4%2B%2FfOZ%2FvIBVi32XWk%2BmZqjZHlFhCu3y9AB7WHS%2B%2Bd%2F0ndAIlsK9F6d8U8M6DPelReGH2aiotAU0gzKCNVSM39ItnxqOsJhTVaprCi3rIFBsQ1R5nFWKkzUAIKg74PN5D190UriSvNu6aPFMfmqnZvonyZ6R6z%2FasRGe80jZY1JTRKvSHWOQrxr4iqrkNR8j8GmCC3X9WMEgM0%2FoFGI1fyhWYFGhmL5Q0EE3c9eTNtIvigBdKCg7Zg9q57nY%2FrpUvO9ZAhAFM1EwiBw%2Fl999lv9ES9EYXgaUr90BK5QJLtYK7mc2%2BX77BnoJBNXrP4STds4DoVrSo1fX%2FIHkDbmqRNUPVcAWvGsN%2B%2BGvvqBWxaFVIrF2AkEg6EIfB%2Br%2FMA0VGA7A%2B1FgJV%2FYlNM%2B4FOGLhbfk5f2IA9wv0ZOmPdGWQzLacRNqrWCAgmZG7%2Bx0QEVEbVtVVGgONYsN6SMzHFwGAXD71oxfL9QWKLiyirNE3wculFdqjQvcT7QqrburXIflRuZLk1pZl8zNXlfAaxC6jAfvKEi69y%2BFWzlhOuJ7J5TOlADRQi3RGjSqZ2pG36U1sEPEvj9muxXXw9w6OO6hdigBqixD%2FPDxBqkBADGfbtz0ceaO2Nnk5zXYG3pbabjm1Dlugc%2F%2BtvWv4dDL97jkI7MWGVyVGYEqiNUwFZ2NuI%2B5PiM3p3q8W%2BqkhQX8NKokBxpK10qP4f7TBicf6USEmj7q5WHy62eSXpxlGFUgykWUitn8m%2B3vBz3x4lQoJgpMnvgclPuIjng3ifxbYKYa2BCjesKrz7a3yD02kKvTxuo3XU2DA1sWkji9m5bFPrAYChr66gkbVQfCd7o9fgThrr%2FDJzQrZj6w2WYeR4BcLlj36WcX70d3YjzbPE4dSHKXW1t6XzpTONGsyq5RzCWn5GHI9Z%2FTk8kyrAwR877kGxkpvfuc27I2I%2BMi2KvuOC9D5XZgvU4U9hpJTHGJXOpaAPNkSSTJsxWhECQdZkgc6KZPkKA%2BYrRBZiNxXSnQ6yrD%2BG9N4YiIqQC01ANIvqfuFiAaKz1fpwhQMz2fZ3P2xzNS%2FRQnPQFF1eowLi0duQn8CLKUwOVkUVXOiNbS2KtDWGZBp66tX96uN7ZbchW8iWe1ZSYoOcojVEEjBfEOxbzDPy67PsbCafRvp0j3QSu7lRNxl%2Fk5ZLeMPsBhNCIIee39a4DaG2Ac5RAClgRbx9JcpQz3%2FhboFFxeij%2FCmHPJN0wwzp%2F9avDFSQrt8%2B3%2FnDsRu4Gmvd4BefWMYtoeP%2FhZ%2FotE%2FpYMaSEfcTIvDHCcb2kgQfrUKATwyGhj%2BWV7DmiJY1hQPVIg4Sx6L153xNvnIpbaP7hv%2B4mkyHf2YGfRntLDulrTcY5qEm5I6IgqJm8ABfH5a9Qwo0%2B1nJrR62no18tHIHw15IX6EnPuhxED2NNztDcGCvB087B5Pj0PNvOfstNVlawYryRih0cMhLEOoqC8gEbn0w%2F5cVnqr%2BkXx1viJTfOF%2B1%2BHcEn%2FD%2Bq6Rt8EZz5Alwhaw225lQE%2Fy0m9xpCMtRcAxo7WgyzVTD6nL72fcg7l7mr6aRBCkPM0dld3B3mlr2CZOlVgdAk916%2FMS0ULEUk1sQV%2BRsbrtSvFKVKZx0F5J83KAxDMXsHRp2ZXR3brRdYbyAO3iiSbIK0bhhRGb688yPczmGxOZ2rCzzh5NAPQHw%2Bihwj%2BBEBP6xJFr0tMLmHjlxvrkS6%2FuTMnN5CxJwoPmvMGeb5z%2F2RNSEjCal5VbokGZpXVPn6bCED9jauiGdUtZBRgm6rUQ5ZAqtTJ0278N5Im3dLF48TP%2B8sa60AlUJGAYuUl%2Ba0JQKBM2AMsgltAOHYh%2FosXsZlH2BPft7xetDDrc17wLvHE%2B7Ob0TS0rZIRUgiYyvPRFDWA5jrVR5lNsVlwWDuNh7hu4tkCdry3YJhI5dH5qmizceD8x6U82RKyyJ3WgOEPu9nMksXT5R%2FV5cBKHMaGmRbFd0Bqg1CvYCNQ6ucvIctHB%2BRxJpR5Cn24SM54Ga6ug24jL9D%2BoTTqKqNSqw06yLhWhyT8oWi16NyrKVqR3JO1iVwldDFYtsar4Gf7I2b5i%2BSCRW0K57SGg1CSc7viRHa%2FOC7Mlf4cBABs%2B2GzPGVs3DRbPqLHYqiywjf9kQ3E3dVhG2HmzCzFjNJhw09Ujmf2JIspGEbESCLwHzlH0lisp4BZxEVUN1%2BCPLTTfAiZd5nOKc5pD1TLlahgJh9Q%2Fgbjr%2ByuXA0PgnG6qYTD3T7ybA9DSjHK0mzl5af6iq5CE3PyiQQwqGUUbNEndOjf31Di0RX3%2FEXV2AjyXUOJbDoJLFbMmdJEDFPLZ3hE3tatXfZjzMRdYIzVxnsXWBXxIMXaOKiex8aEG4qnVOeLD7xkKyASzySIHEkBmtz7sxkhzdZvkDOTw1VpDXoL7Dz1E3Iovkekq6I7pnCfAudOHJgS%2BEp0QGZ1935Lu2NTcpiMLUdA2i9H6neAC4y2T4CjQ5s3YNMteiQrxF7VQneIvWV2eVXvc4rBhveJjm%2Fy2eFPo66w2MkJzi64d4ImYaOhJApXfBxyAY8RUCeyHjL1kX4MlJUOHWvduZctiU6rv%2Fh%2FeKzvptAZgjltERRc9idlACV4ZdxpZtUz6GumiuZ3CvulhQ5G9rEqTbfCZ50zmRW9iAwD69UtVYv4qAa8LXvLV1%2BpILR4hTwenBZG21zfvcvlwVTNR%2Bj2I5PTni%2F8xfV6dnlA8PR8YxnPYOa40g99GgDrERiUnzsuICmQdeoHFdqNAp8Zb2ggpiWXDPmHA49NCqzYybWN1Juop9XyGIFwf2ep7CBnpB8LHiSvpEVFRYgzrFo5650LWWV8O1CLy4aePlwlGiv92JCYuI97zGqvrnPGrjyhb8YVkkP19x0n3ylJ5babc%2FJEQ0MQZ4hkUfWGIeCbOrgfcTD%2BupwOlurRF%2FxuIKrOTeK1pjcNJA%2FqXIVsLxvRwBefqR8MaXWrMBeajxAU0hEEkK%2FN3uLkobLZipb2%2Bfvi83S5IG%2B5JemMw78HyoWyz%2F5UsknI1eCbBjdvn%2FUPs%2Bl553rOaOemC5nRRdHLDu%2BUhzn6t2CNkX1jg3FT4OeObWa0dfZgVWlErigp2uVT0QSp2fnGZjg%2Fbfqdugv6jF8HQxIbYNSSjEA9%2B6yxw%2F7ADg0oL3PeYzS7BoomDgjXsR0YQd03ts%2F3TemF1hF7j6V0DAxGqOP696tOio5F6v%2BqmsYDtqx4IUnpLK11MoknxMDp%2BSlrxP8g44yD6EokCG4SJMi3gxPTdSdCcBQvtvStGevoQx30L%2FybODtR5ztNpAB%2Bh4c17ELrg7M6GovGRZNhboG45%2BMGFriZ%2BomayA5vwgIpAzjkB8hBAy2rCNjNg6oBsOr0RDf05zxk6FUAOZqNGBT0qRFn9og%2F0LyVo6fz8pU80dWdv8nQdtXephrGo%2ByhE3vk5r3YQ1ECFrhxfZcItS0UyO7%2BkG2HnJc0bqVGIXP6cFRvxUexx%2Fu3sJuWUl6WsoHjbp6%2FRGkpaYliJE%2B5yB1U9Sd0gjrguX8fr%2B4RuhDJEO4G37cqoOXn3JYDvtJCANOwCZS%2B4PCY8FlaZIA%2BG5nKHW3x%2B5gq0bKrw%2BM4aceOPbIj5x7I0m5lMefsnc69yg62FDsNe%2FpdFIJU5Xm1XqoN28VWuwrMv9u%2B1dwMVsR5AmjHoeTTvkidhF1wL%2Bz6f4mSTPyEmDxZqD2w2v%2BIXQnh8EnZ3PSTkrl8jRsJH0a4CDaGYBl7oAjFfJjIsPkuM1AjHJhxPIBZIuTGbBRfFzqLzPE4Xpt0nfvM0Q34wMrQRR6Q5hvjHRkgFVLZaf0G63FRLx7NVXoQ91VXuKTJ7lQYFZFef81%2F44NVI1y2hO2RbxQNtbMw530tHv%2BPdY8HgLqLTcs1l8a539ISZw0ncsEOaZzmr7BX%2BSkJTvvCa3%2BhOBU4E5ExYxVxuSy6gfIYaVeI92ZtcA6UPVEiLqcRyXIjWyiih5125qz%2By1QtK2zYTmMk17SjyrloqOD%2FOuEDKe2w7CIg25W3qYYh9LfBH1RDZOttSLv%2FyN2graLzytC1yQkzJnoSJrqW%2B0KRU9ArmDFhupB25fPCX2xn%2FU4vPKkxTycQ57me3FJdDmdM3aGwf15tRWA3QaCXYp3pJtd8aCNMQiFgUnJIJYmTAuGcSAfWPM0EZCZBoBoe7EJ9Aeu1ek38rVumTdKfjV5ir6i8Vs%2B9aBVetkc6%2BkvmXgcLoW11d5QQ88dxxAWJaBy2WK8zwMNu8XxXbn3bAbI4jDtBl1OmM93QbCgbUzk4PWRcBdlOb7W%2FfdDPJWOQuUc81nhT1pZmZEmzW6cjGi5d7iIU92T751j4DMApqBogwYe3b6Ro0dLA9WB8k%2Bo%2BlYQVbzyeoumNRTiwdlNKP0zxbAo01t6ZwcBuOm1uiljwOLF3MEu%2BltfeTeJ4sDM%2F91fq0gUiZoZhcfftS6XvOrB%2FGEy7J7CXgAsHtddKaNwnKVvpZxWvJ9AMIQ6zB%2BYYI0HPz95ad%2BuWRdaaE%2FKOHkp4Jj%2FXpkPxpJjLm5F3PphAZcDrLJ3nY2PFO4ycw2S3LCotfruqWhg3HagMvH7aMhR%2BCYzlVJp2RrkJ2xfyu4YjUaPdD5Q5lBg2vInrpZHJDUm4nN%2BwvMqnvogQHk%2BX37SDnqLmM6u3IcxE7qL8fcl085gXHX6e1X1lvp3zXDgKvYYLlqC8S5LUSO6sNOxV%2B9S%2BdB3JlUDdcgfd8%2F56XZ2ekMYTvcXp6XCtqXnbUpVGpVuqWDYqc6mymvmJchXtk7UBtbfCmgLP3utLWs36zx5RgWqwVZmUJQCRFnEP8mR5ZWkMulG4dUfhgZ41XTyGWjmdqtnzAuSagjTayogsqq3LRt0lvLlITaQK7P79YH6zAHbd1LmfLMawJ8A0t9klKNB2aLWay0ku%2FPXRn1usguZ2nTH53iL%2FYjXNK2D0sY81IRvWOUy38%2BkFyGpdKgPbi3RHSHFXm6MC8pY19aVpXmK4vrldIMtxXZKjv94AEQ2tCT1vlz0fR61tlPsiVuiLTuytDk99xQvR2RnlwnicPbtcFHziaQWl%2FAmjeim9PCCNMCj%2FT1%2FJneFbznFuz4TpuUabUfQICuwuMmRroCGlxhmH%2BWVgiRwpkMUf4oiSIeXuhM4Ac99zB1JskBV3%2FQT6sqKolNeiLgenatg25mFe%2BhQdyXpYtMWu1%2FysQugywSI8ua%2FfkPehhb5LjAU%2FSvCMSmIf2xU434k80Lxk56yUE24p%2BtcBmwkfjGJJYmLGdXG5U%2F3o5NhdUPZO0Nmuqz%2BOUaJ6GmvuV4SujxojObrh5kLm297qQl9MMFA7NFo2o2q08Kp7Qed%2BYa8WILqM9uoIuuTk3FMYfdT3eJaKPM0CWTEmpNPBP1J2r%2BnIy9W6MXw6MnysqTK0qIZq8hf9EkxY7gVPNDWvfVRWSQ2X0BLT6c%2BWrgw3HOJzvzmSglOWzXvzi0L64aZk0hYbxAXRnl4jnmWF34USfrpURI5yLW3lzUMtPP7x0%2FmFY0JCSG2e%2BzQDTiWxvWhbj%2FgXBL7yVW8kWEx90YQw0hWk06R5CCXFzaNxBN9No6PI7Pu5Etq%2B%2FcOg2iISxLZqF%2B7P%2FWn1yMcdjyTovtsTsZOtUm7zoWHQPfmA6via2blvWm3pV8B%2BC4WLcrmSaoG36XsCOCfCBR69Ne8S048YzZV6CuI0qjP3TYY7Yxrj6Z8snls0U9n9Lz2idOhR7FCQ1Fl2ODPIBzsAzKLhaVZ9k%2FUSczQnz%2BU%2Fcv5NV%2B3p5TscsQ4LwfRV0F3C23iGRnyDHqZdPHqwnWHBhrOfTdv2sngqorHVPexQbCVCFWZtCpw80X7vK7%2F0y82Qxk0CZQyQxyRPf6eD9ieZj%2B4lNZCzlX%2BLbc8f45ZaCb4W8SpVGzZRfMKBm15du5qzT2NzY4TbSsNtydmpQo0FprOJOFcGAovXh7P9BKS2Bto4JjqG5BekZVN8wKUKe6ujNqNec%2BZf6Jde6kF0Vv3c8QKEu9jvcUhM0WyqVoyq2JfNqd0U%2F%2FHlBazFSjNS1GdAuz%2BfcFZQNJnwS5%2Fet95rm7ejIe9u8pmA60f8sQvS6ADFr9RbWLUuzq5GAdWK%2BxRIax%2FbvFaWrAo9lt1pFn5iIHp9WC01xe9euTjHK1SJbPGIjR5zqsm%2BuwX0i6itvSqEQAJL1vlB7USMX0dK9uoNJpUQy12YX8sxZWUmT7BHNkPmv1NCDE2k27y%2BaVBLb8Y%2BUU%2BuacYvPeMNHDja3a9GtvVaauuynEuMvCHaKlTgwbCKTUagPqva6vR27t%2F2y1%2FNp7wtfDZFpNCQb82NAwXjfvCTTp0dVDmEjNzFtoHZXVlmI8llzk3UxsqnnSrQ%2FtG9aW7lLz8iiZRh1rPBdVU4VnaL4dV%2F0zhIfyUiq1s1D%2FPKPqs%2BAfunKqeYUDkJlp%2BJ8W0S85QG%2F58V%2BsfhMiIpxqv1xQLIWXl7QjpqmORm9TpeVTT6zEhmi5QCNiF75diYyiLHNuKWWkytZe6iNXnM2kja%2BXWA9mU8Pqr1SG3GQka6D7mPtsNS57JAUO8xHt%2BFREJT4%2FwBIeSuaRHJK%2BU%2FMYOt2luGn48SOZO5XpKmlzNgpVhKD79OCFLAg%2BXdGFheLFHWmhfHbGVldwPQ5WMysxUibs0bSq3Q824%2BWOqGZrE0AXyYHoUI1a8RNqJ6QsGufiZoy9ydVhVCEVhtCDQvM%2F503GUdjrkXTVr9VW6yt4aTZZ74fQvuPK5cR1z5Q%2FGZEGsVzpJrABbCMO2rSqqwMuI3i7RcB1VOkUFqBA6%2FeWGXgxNFqu4HdA33y9k9ypONazxHqf8k40B%2F5zhHdXygRfIcjIw%2FJx1rlSDKjn9K99s%2B1sua13R%2BcwVyK6cpJZtxsmKPK58POuF9Z5OP8D6oi7YdmIVBlREJtbzKiqbsG%2BrZ6z9s1iT4op3l7HOV70AiVglQaUs1qBCwiMA6L3UrfU6e2BwhjfuaETglU7VARFFjrXO53fRtroAtcUQxhVv6Xf2zPEwaq76h3q8dOixYMTwRHAMYWEbjn8F0a2dUqJhyo9yIdec8Sxgw8FoF%2F%2BQ6seFptzK5dRAq6tsu%2BsW81JR469n6H1IupT3qhXfORiDjafamCPMBMwpYDImst40OrAuN4uP72of8z5gi1KO08hiwH%2BS3WRVwCr7PJ8cEz7gaFTzinuMmbE4LETI4IZ1yDGfOiYlX7wPLwM2gtSKju65VbsYlZLauGg45rDkJyp53h8SfOsXuR8f8qnJtpcsWxKeNpW3WJrmCKFEs7xj0nMHzKDwc4EViiXFEnoFpUqwQsxWkENTOLMU5GtYGqqTtTGnBSvKvtUZX1soq8LTtEHiHtC%2BvL8j325FG2%2B2EysTGCmSV8oZfD3vKuKExRYrHBzKxF9xoJinP3DakFaZAHJ%2Bvq5XX5Tqf31vpQ3B%2FzJzF3opVPxqeUjbXbEfac3Cf9%2FRXE8QpWAtCduTZHihEHDXFLX2KvGfd2UotKpgNPf2abw56CoQgyU5vsd71Mrz%2BqvS9owXMJh0zk5eENU1ZGOA2eD9dSKFag2HnlAtyiBvb3btpaOAsQF%2FqRDYfyurUGyh24%2FgulNFL60FFb%2Fdl6ykbObFdT7Iu%2B3kUzWaakcZ%2FiBgp6nvBz7O7JQmWlnqzbW8zy3%2B%2BqvFM7AYWnouN%2BC0rSCYlxoYBU8tJ9GCI1Sl1OZ%2FSXJssbhbDzkiX3wPSQeVNv8MchF9xgoL8Re9MX2Jwr3zr4Tv2fXBcTvUv9Wyw7tJroU5ehHNUhRv%2BgVwkQwvmpDsH%2BRDCLbIW3mP243Pk6mxA4t4sy6nBVEoZuiHRPbuDhRw1KUMIGkx71PPxLCsT4kH9nLs6bnn45t6QXwWGGdonKkFDngoQotIcUEtrR3WPvqK0kcu%2FnwMXCk8B2wqsZwlQOHh6Y%2BHAzxz4cA4Vzyh7oKfYQrOaLfYF9M4KtHWHUJJ6VnANUOgppeBp44QrOli8YZForFaerHV3N8TenW88puztLRYNykHUl77IJlnXFSiJShx%2FOG3nDCjCWk4OHvbzSVsz9Eavb88y89i6rnxuXCyV%2B8KHMGX1QQ1xVfvJ8XB4Reg1hIC4OV5dQZmImP7XSymS1e3fHEbYgiiax4tfIVVGEfZOUVc6C2ynev5oI8qos%2BHwRU%2FfMVV6pCOIXHVjAhz6WtbxCFQZD%2B2zP4mB8bp8focHWLJd2BSlggENyw0Wed%2BWF9A1O1SPdbfq%2Fr2xD8XV72eW5S9%2BMPhWtH8Ixs6Oy6s2e%2BPiKuLpQNoF3GVwSBPXJB1hFL2EF7LNlujPH5lnKrYArVXNcFDKSO5wwZ1vi4fWqEyDZeTzKPJKBq4b8MKK2vFle2hR0HY9u%2FYhFtBH5uZNaw8vFmFtRwISvXVLZ9oWwuog8l0P0ieGYzIeO3KkURraNlU9SSwnwNfNbpxlaTrqqegFx%2FfDo%2BoltJxqZrCBUVtGH0VEZTNhb6etzUgW0YUqotw2oMjxH3NRLKEoMgCxr1gT0FYSzklRhg3V4C%2Bb7CZfwHHg7o5ll%2F8bm%2F0EEfnm0JjwqxWFDW1R7WOAOLqItE2RUbYf9Fl8T%2Frib0pz4SNEGPabmhJHTNtSKuIcd2T969n%2F9LA6kZm2AIPiWM8fJa4LXpTcB0q5n1we2di9NoMnnSQ%2FhITBBFNVRs7kO3YYos4BWqbGxaRAvA78oIUuvg0uFd%2FiogYSG80lkSP5C6IxNvyRiCkPVSDd56Gt5xPMyQLbcsAKWyGAvY85CAkQ6j4zXTKSO8U2BXGOHWjoS8yK2rL8wu6w%2BdHxmA41Wd%2FuNU8%2BWxwvDtDQ%2FgBE8B%2BpeWqYSkfFR5AlpRGJJduJlkg0bEHpqGvSHJOkzG4Fwjtl%2BiV2stn4ThxIszFQ6ywCZKEd8MHeGMXszh9%2F%2FaFspkP3dCavzfT3ynJ4lS1B1ZqeRJOpgD4nrPPa4MEW26TMvAtBW58SM%2Fp%2BixMiOhNqSHIixspkDVDeGlWJQxM46gTX18kJhRZvc663cgH4y54zjfJj%2BhI4Lg2rNicyX1sl%2F85GePqT5LWX6FFGRr3KIIPofk95eSEEYPClmZOe2Dj9%2Br3XbFypSHNGMy2nb5e8thI%2FJdEzQTZzN6fYSvDcycyoUFfWknem3gzIrh364z2wpw5V%2FxJ5WZVLIeR1xeCWIdT77uiwokJk7jAOY8P40G76fpHP%2Bs71j7pjWor9ndBkPf%2FnRYIoiL4Hwix%2FSz5L7mZX%2B%2FSx3G7liIphmPVfXNsntQXO7HB6UviSUc%2FEK9D5%2FbWuQ6TJJKDX2LfZjPT5wc78hwlDLyQC%2BgtIvbD7ijNpklcYKh1dvzvlzQWohWu%2Fry4czXH4pq7md1F%2FiXyBzRKR%2F3Df4%2FhgdugIdXQ%2Bzh%2FMoVCk%2F26iOTyTN0nkBAxlqwydgl1EeKBRDBd7KB%2FNqyKNriZr3vOcBG2NyY7sRE%2By%2Fmc70xfFGtXOfeo0DyTqvcrPvW5vhBcRKjHPpCimXbgHbFYOr6%2F%2F5c%2FuAYLtOvAVFWRf9f8nhcG0kGkpFYIdI27YSXfU%2B8299ouwgTsypuBa7Zh537QeidY1x7S68lE5XCQugaZplA5pnwNJmz3pfMu2X7WKJTrhIhutnxwibF1KGQcbk0eWxpBRTXC5q4EKPdStvbhQDJr3eGoRDCwqfbx9XgeFOk73X3QcMUOVSqlpUATnmldusUzh%2B9mLvobjkjxn3cUWHWsRbc5MwBMnnAAIY6jgqoyQY5tx5HAp22zJ8MjS27NYGB22VcgN8SHOJdJPxM1kT2vhjLCUI9jOlhu4%2Bw8zLoQVGcLwzYb39YbWZcDaBUqWe%2FYJRPts9x8BQANEiSm96zOqbu%2FRYUzAyK0QGmVVAEEMrRuBKZ3kmZ49zBmIIHlMVCMh8vUKOlvAeX9D%2BlJ7nictgxo%2BoFJOxvdqrTsbBdOWSNXNuMr5lweaXkWTdE2GL40p0Mk%2BDjSA0RLXy1natbzWhSkWtREgAs8L%2BXniB3jzx9OQmOblyW1QU2EXivsq5uuRqYmmrd8MWq3oHMTk3%2F5geMAcwJwJZKdVQTqZ1Y4%2FyIfRDCTpsy%2FoPEwknfNlyGUHyscGa%2FFpB2tcgfCkdQS9UEh6DEpVP%2FuxJ3a30OLZQO82NBj8Ae%2F6JQxS7psR57V0L1YsiDvbq4JGuWq7GDExF7TtoTqfLCmdDDDQM%2BHow%2BV2AtKch5LOrQTkEQg6CwR5mEa7QXtWBQx4iwSJhOaS8lBUKXJIzBIZaaswYHSsWTp3BmuEhwoBzRyUrthHd6ECuhrl36kmyqrBK%2FMyUUtIwZ3Nbpd%2FT646h0bIKMTrCbXhOI0Yu%2FZYMBAGme1%2BozHQmum%2F%2B%2BStBcn1Ve24O%2FMxzAfxz1cVJ5G9OPaiF4j4zWdL43KW%2FqSxefHFhPgnDuCoUx8V5lxFpIgz%2FeIUXfX9j2iM8%2BjSMOKl4%2FU1ZqmUBqcofDq0jQckYHVi%2Bj5OANSSpUhlvfv%2BnTssLauF87osRvai8vPrLsWprUgEpDtaTTwkk7SnHfRKqhU5bkS%2Fl3yawH3nE15uK02zHFIK0lDULwp%2FlJkM4h2ZMy7RXIUGsNBlUeD88rP2c%2BAvL%2By1zc3LngkvBxY5QWQhuj9Wt9RZgAwmNIlYlqYM53iGBH50FLdTeywuTXoAGpM7ItSkYGKmHxChv3i4bf31%2B0Tq03HIniCq3tWBjIazq9zCeqy7qPYxPGl2FNP2i6vqUuUefirH6RTxeZ4u7I5qYAySHqjog5n3gW38BhUFz0PX0BelWhYU9QUp3om4TnUkLGfO%2F%2BaiXtjZ%2B4isHdzjfBK9vwArmsq0%2F4nvXpIvJ95kwVK5X1ec%2FmQc0xtxiRcfPfYxfdeVvwqGljgQ%2Fm9ZcxIR1A42GQwH%2Fujg2Os0kffd4Vornnh5vXQDIuEnP%2FaXkbQwy3yF2chxUKbb9UFHPCbD%2FvnjHnCwTo%2Fg5nuQ0EFpgxS3%2FR3yEnC%2Bygaj8zHQRzEGXswh7SWvxsHA2ELPBn31l0y3OxnUn%2FW%2BKy43uSH%2F88HttnsX2PMCLp2wcLwtyRQNYJbitKpAOl2N7GrKIJsEtxCN8Fdw4yBezWUgq%2BaWGc6Oa0mybKGWqzXqjrJ4yuD8Vw6qBR2acI78wy84TjopdqZ%2BLiQWwlFu%2B8E%2FNiJqiB00%2BuW6D05dP2MKGC7%2B8swyMzvX53LL3rDPOO9jvD3Zu1zWb7sBPJ56gRbdbVnwoWzWYJPUspmIi5RlbpLuCzwLJ51pZNF%2FW8WKtAZ%2BVCxfPP%2BVfinhYXtHWORq4EQ%2B%2BSXqfJ%2Bbl9MRKfCg5RXLcJ1HGAHxkHCVBxQF%2FIfhNpZOWky49J8ybHsx%2Fip7HM0V64Y1OVQGEg4Fh%2BoBnJkQls0EJVZDCGFG7NsZwcLbr%2BH1HyPZcVeTbK%2Bs%2B4LnHn9aZGTfqxZt%2Brsc1ds6ALz8VIqjaZ%2BwttQPJeA%2FzbbEvYzu6nnMzOZg6G6qHx%2FmrTZG2FDZ5D6nWhjfed7HO42%2Ftq6MsLwf78CMWMwg1cPUVubKERLOmSZHBijcOI9ql7aZFXlVxby%2B4ZZIK0CxP3um9eQwYTW3nKboqxyv858ggPbxB8d4IdlUdN6gfrf%2BmvBqhzp8uI2qMxnet6ILAbYA%2F2%2BBk57S4j5PcAb5borQGj%2FVgHPrrVUICu9P%2FKGZwnvc1mublCCtQm9g8gmVz9ABYf%2B3N6ZNQXzFiYq6tQP0%2Bz9ALMWhPuKhgVdfVaVH5LJLFJuj8BMuT0IffQ8Qnq8U6CMlXzd21XgJBRX59WxM7X2vHqFjnnYoler3Yj2UTj1YW8uHD27ruqggGcUQDrPV0jV0yHTlwzJUZjp%2F7%2Bj4RRUfXOlaNOlHM0ELqRangRStc4zI6ISjSLdluDjFVdZ6cDnkDQd4FxnfgJju1xsZ3CIx7GrtB3o26JeU8JrFnPUU4ZbUGrOubNsa8jVigX68vl7TUdLLqESfw%2BZR1uHKwXtXDFO%2BtYjSVtW8vZzkGn7kn32CSMVnEb%2Bk%2Bf1Wf2eH3WzJj1ywzZ8rkoJ%2FsY6771F0Oj3YaFFB1M5x%2FtMmeUecKrZytrrjnPY0wrreslbuBX43u7LcANulKB6gRRyiclZoJHn0Z9kygjBodCUorx8g2mNVNxGn1U0FyTrqAJsQjMAPn%2BicazkqgWBXVs5KhI1%2F0gY29jQ%2FcWlMkO7QkhijYx%2Fw1fNbkhKYKrouowiVk7ulnXiVZAl%2FRPFoCE65rZICTIx7FIxiHU7V2mUey69xdaoH2Tu69XDSTAT%2FNZDuUVXixXMrcQ%2FNG%2BaIK4acnTw6gjmtAd412kZk%2BrvHdLWzmOPMtZ0lrvf3wd7gugLzgo0yQAfW3AZFmLtdhneqmvPchqhxJ27ch%2Fyt1%2B4UBUIkZjZcl01JDx7Pun9RWCDk3X1hfEg230se2LoQJLjq0C8%2BquPghvTxLa9muWrQLwI8u6gTPr9VxJDxfjfLR%2FWndVpp9T2HpaWE5%2FNJdaqphmfR8%2B3FB1HvTlMX6Vy3UhOZHMQR9DFZ8S7mwxnjsX4nuUpzFi4xkeamVPuXeLexytvdlzFiseqiDtWI20E4wJp8BVhp%2FOY5nFgWXxaUWned8hKDznls3ov0eEdO%2FJRTAiFq3bFVXGNoWOKrrQq8yXpOOmGXzPN5VTfUCQl3OYzF5eqj2iH9ftKnFBB5%2B%2F%2BsJKHoRBpglLA0egSBqJLPTsx5b7UYov%2FIrIDMeK3ombhreKoAFgmSEswjv23ZyZyk7h0U8wQ%2BbqFqx%2Bsz8psBB%2F%2BZm7LMpCetDLGZRGem%2FnRVKFDlTk%2BLNMIC2nW1QIGc2DkrWeHmNBCTX27YVU3jepDn96%2Bf%2BHxHZj3sX0Mv2qGlZ2pQ%2FO0SBHf6wgD9TvhTdcNgZ4EACewDKyTbmk5myV1VHb%2BlvR7J321hLjZeDtOPibicX5UpofyAZzFqBN3CHp%2Bf4ADDwK9AEdAvMNmVQljqo6ert9pAp5LwgFE%2B%2BvGAQYeH6dRi8nGRMcmqVONC5kLFWZzjnj%2FEU0mfCGdLE7acBdis4AY9tr%2BqU8vjdVw%2FsmBDIqg2PCBfbTc%2FINBoegRgwxhgjhsM202IEB94bMMhafDhjMTqyDVXb%2F7heyREfRlCxLkCQybyV97o5fgJbQ1ltGbOvG54PnEu8W3ESg4oAA3fDLssa4swkCwqo%2FPy6aW1tOe2jm5Iemvi%2F8OCkSKxiesPQI%2BlpC9TDcMb1s7Qmk5BIUQZ30X42xS1F6p%2B75ZKuWgQjoDuNlAdzk%2F2pxutgCDPkHtsdjX%2FgBF1r2N%2Bn4sn61VUOHXVyAreq%2BmYGGkeJHnGxVsuKXIT%2BazUTUfTprp1DS1l2wT1VKfj7AsMo3xkd2yHyD8KJrFEmxhQ9tVf7I%2FiGrdmUnEFBwwefTII2%2FyrCn3fU2KqmQmGCmODI4aZbW4%2FRo8%2FDmpMdcoOFv4lf%2BWF%2F390NWOZFvKucPB5hXk3jTRPcwgmuinx47cggaKLS3LdMNuxjUz11S8GG3NH95ZFDZyHYyAGzxFSj%2Bme8DvQg7Dq%2BSvBLDyHS1Y1yKjL%2B0T4lzJ4jUp7pZHXQ%2BlUC8PdCo2sAnW2XEMakVTQmquiTU6WFPsP3EDXu82sptRQkZxUwPJLzIPIkYGozCTsBcSMG9fWjZplGeupehl3KFqKOFgs7MRxKXpwkWVcbv0goZqqJ6e%2BwJPWFGogSFrHmn%2B0Z1qAfy5tgn0du5TrwzykWH1fbCMs9DZyIprF4TLGwhu0WMsmwadasC0MPQtfqcC96E%2BTpk1%2Bd7ckKZQ3JQRs6ZmQwYluvUUFw%2FyyU1cCBoDi2CJOKlOrjcZnlYSHz5w5MFoB8GBpvSUdqnSsn2SHHEM%2BLYEvyBoNN3ikG6qxM%2FEM7CDKpNsaW6rS3sG7PwEhKYdinB16AxWGJFn9Cu3aOwkESgo4AQ1iaLqU2gHq5kXtoOMcG97vd2nuIAODxDnD6myqsVsXFb7vjfhb9rGNu2%2FeFapCT92fZSRNN6CzUVKHAv4xcU06s1UGHQm0Cx8EL%2FoonHaolxY5RgOFvuau1vcy9hT5VAcX9KxOd3Do2LnUT5CQqinptHpfxVyzumohUoS85AQ63hPs828YM1vfDRJNoaRI1%2FB%2BDbkRY4%2FqGO0%2BbDhtdWBWvL1AOfeO6xCyKJhGIYRr9AoWt7rBR4FOzqO9J4PgchLnJQNDJ8%2BknGpAMylzBf0Q9Ddkp6ov6NWbOFMLczI02E38bPZdxqmTv8WUBzAvJAFBH5RVlrbAZM%2B0PI3RzgobITkdwcgvXXUuuHA1FtJDlS%2BYqpGdPWyWwMhELdyVh4Vv6kLxJwyh%2F6%2BNc2y3wOYVpw1DE2lVFEFde%2BtOSPQ5PsikYE4XfIdtEB6fsvtaDHoy9EY3JnSSx1i7JpBcb6quY95ntOgfkW4YHsiZFz2hRLw07ac%2FClaGlUbJ4t6qgRPq3IkoHQE9afu2Fm8s5989DDRT6h7kB0%2F4d6BXnZfUtL9AQ%2BUqnaThvXcby2CKwJQ867SjyudidZ5Eo4see2uahiBFfzwCbUF0tQV92O6laBTOU%2Bf9SDOerPCFCqCkmGu5QgPP8A8Vvi1ARyGvP993B5QC28nJbOZMX2QIxZ%2Fyls5rqmf7LOpm4FOArpjb4qROfen4w2A68CNUmJ17pxiCDhF%2BcSxS%2FF6HbYyYGMoUOPXpSy%2F8KYW8ZVePkfblZpn5ibsJhYv0Xd6%2BNYNZgtnb02GZ%2BjOkWlWuAQBBf73inOVcheH5vbyJjtkI%2FqQLy8PhIBaPPC1bL7Ocpo3OdOyk812pjs9Z5j5vAAsyHK%2BjB9qH1FoXkrxeUgLF%2BBkLI5B0GavmerOHkXq5SJboURNouJUf9pcznl30KueXk%2FjHpQ8pE0UUzyWSIH1DDFA%2BPVjV8%2Fjn3vygSOF56bNDCua02YxPzOHiHTcXRbLtg%2BPE8jFUnInaKmBYMoQTaRTo2%2FsXQ%2B0LJXXWkcVBvXQSHhMKmFrSObQbLu05Q0QY8gPsQpaX6fs3gBZhosN%2FjKBZaNOEKKX%2Bww9aZQX6Fn5OoQtOuMo91F9IBeLCz%2FLZ1hrvMYZGREVV3fkF0TrYbjAu2pbRwvjPQ0aTK9FLS0dmQ%2BrqniJvo2zCHPHZMycIlBFyzJvqygwWUREXsQoPjp1aMB0Hq3%2BsQDaoxz2RiRtxXAJ2jp3DghWRonJ0KEJtDRXXPCI03Y1c%2BJTUWqJpCnibC%2Bxt8qKFFazOV0HT0Z1cBqDJQLVerbZTSLwkowct3ztH3Uc7Kub3powTo8COnUpOQxQiTEkqOfU4myTRwK9kJzDm3Zivr0fWOBfDprVpbeD0V13TG5h5h6Dc%2BNHm%2BX1yNJX6%2FuAtix%2BbiNAOqE8G1K9JY4gJSuyXw7EFDReKKynY55VsasSRR1SjjQn6lDVtJ5ORdRnYtIp4qYfRFFPohZQaXcGFXUY3QZfyu%2BOEgzTb4p1xFBJRHYYDdXEi2vr5fs18XVpH3UlfIKfP6RBrP15iUInuZYdW%2FQEVBsBr30YBGs%2FYUBnXr0eb8zVBKnL4G4tY48seWGgyCvDx22DAX6KIKSgjj27GVjUcU7zUkjDp%2FobOKdwA9jqdrECuWrhd%2FibT3%2Bh2wgXavBlTqmpj7nPOXUSPaYPNUrH321SAuy9eIxSAWVyBFm3jVTed3Zal96HkBeUh399DL97qM9rJUgAoMxPZS65S62kv0VllwBsulsmr3%2FPsiZhlXkvrPlfG69Yw85h1tcLBjmYCtHyqC4Du528ehgXWiURUuGyt4y82JAdr6yLIjjs6qOUot%2BONhoY3VKrbZ1Xw96435AfYligff%2BwbkdjYXEr%2BsSHHcRObkY8Wv4frrXNTAAMws7IcBrbI4JpE9Ks52CCIwidq3uN0X%2FnZkUAmVo%2B20LuLUh6Pua0XwByOBUJxyYj0b1vmIyr1yt6RJVeH0i3zaIluAWZPLSirQaKUly1xzgc4S%2BHjKAr%2FwP%2F%2BfZHlyAJ7eCdfJ%2Brq5CmNUMgJsJyD6ir4gTWEIaOUgi%2B%2BfQ0GfIrPHVFE9ytc388skjB3Q79mqUB1OIwn6HvF4ngRZejAMrHWL2ap36M%2FmtQ91sdTXzHH0fYy7WtBROLOFj98Wcn6SVL%2F5Mj5ktxVL9IRMA9Bn5mxu2KVccKWPM%2F%2BeAcybc9S4Ata9wI%2FVc%2FNEwpTzbedJY3UCGZ%2F5ilaawUsuPa3ndvtRdt%2BJYeavAXnHRSbgldgCRBkZYvRLtVYPJaqE7f5cMsy%2Bj3SA0rDgHpKvtF%2Bf%2F8kYxeRqUW2vHBEiCjSf%2BwlBMyaXZapfMeBjrzzgWUs6%2FjaDIFPuLrmGTvz3PuNrThdm9v7K71jqVv7Rc4792oJvt2BXfuyy35D2cIOwfjJe1eWjlqK%2FA2HD6io%2F52fuNX2WPv6308o%2BXkof%2BoJhGi6UmXxyKoPPWYr%2BtS0CNrbXl%2By03ZGF%2F9iaKJ3MbpZu%2FqKs2zLvB7OGkn0NNCCWIzpZ5q6%2FwWFfx%2BmAGi7IozXrGuVMc4SfW%2FhbGHiU42erfVB%2BnyvUr2BOvkiVWzBlKvi7jUuzPXkQxNV8l6Ws0uwkJMJWbeJmNPj24t%2FYNrsimwXWe%2BpPoOfLe4CvKU2ecpW5iwROBhvYLLw4OPYIl%2FXTf4AczeQuCseipWdi1h4wW8F6pfJKDUIvZHSRLnh%2BuY%2FoqFtxx89rtJMxZmbJMbFaPUuukeStsWV3rm0iIv3WQZb9LlrhjUMvDmDPRa0e6lJez09SpqTEeFJmu4zlrTPTKvkRqKs8AeOdEVXcOF%2FXUJ%2BbQwuBX0r%2FnJsXT4cNycbXGpwA7ieqd9n7el7Ica2ikZjxmw1dXt8pf7wdU0tYp90zCSbAj82olnD7c1ZIkyAp049G5E%2BnTESJAUB2uyEkDo16smeLbkk%2Bd2%2FX5NXnrTVZ48msjwEe2F6jRTEofF5YQmnJDTUTAMerAzk9uZ4cg%2FOiILYoMfNU8UKJtD2aNWsLCWDhtwfKdhYfjLXV2mp1GABCSlElRNKj84inDBpYhXj%2FVnScl3fgo6l%2FnqrMkbc%2FF33R5QjwvKYu176JZM8QOj3QVUEDbDzDI6xHpK2L63C%2BDU%2B5peCoZCahlarlid6NI0MTvPX7ADrSWLqVKTBvvCXl7e%2BXMhIdSq%2BtP31qbusHpiQwkG06jTogDKWSLCgamxHFmMCGmx82cIFUOQZH3X3JbRWf8jWcZ%2FqyXx9AYqqTqa%2FNML2WXIyTBx3qVVQtk5MCnrXxog8%2BN0IQKXhmrI%2BwsIY0Rm2UEjNSwdhXlo6%2BFbxP%2BHcARVVovaArIB%2FhbHQWL39zzDyxwQOrvaJjB5s%2BP6gKL4obduXZYcEaNw9qCBXaR2zywCL%2F13YuxWLZOWRLmRcKc02nVjfqGUlyfBOLhuuKluuqenR8HXoaFs7ANqHf9dfNBmBo%2BYvkbsoT9Ec0gh%2FJ63kFTVStzoO%2BDcmuBrN%2Fe%2F7eIrEAnDABm1w5divkaQAaWgTmOWL6gOKaBVJfqjV9Rx%2BqTO2DDpXYA8afRPnil8c9nLjmxQExCmEkUlpLiEJD1bkTMsxmfJwnX%2Fv4wMUA88BNWKt8oeiQZ%2BIoUgmznqjPpgq9qit2N81IJhsgOjGEFHhKVnAwmwgvv8V9P1NaStOsqpI7ZHOnnYSxTQruknxbeu%2BwQSsnMfHSNgAjL8ViTgQWme1TnJeKcnKTVYJewRbyMSU3jbGiKTk6bbs%2BAfS5YtPIwW2ADw71DA3bJclcWKT4QzyHB2xHXwEmXcvNBpSePOY%2FPOBSUiYC%2BEC2uKb5l9oqZo%2FQEFRgQLYf4g5mjSqVQ%2B5UBPLaDfe1htlGC6IGsFexhogmRMScQc3fCNnx%2BYKddeWj23HFpbT2rh5OalM58HILT26pg%2FTH2UTSY5jTWVEZeTxTUdBRC1I9BY3oIlVwbo1%2BW61lYqEcsdMU8ta%2BjIX90tPGP4ZKj4YQHTLP%2BtKOVwpR5GpViuAQBiEdz%2BZHQ9enHQ0Oi%2ByCU4ad1nb64mdG2Q2tueU2zJpuwuNTOWgcaz0Byz0PMqXxb4IDkyu5PJJ4SN4YlPGEHbiellCPLWp%2BjMwuNv0ZzFh49ADS0NTTkp4uTHemvgjS%2FhWYvhx0UgxQGrBxoX79hkAdrZNLDgJ%2FZ8ilb%2Far%2BqwGunY57zCuI8%2BNoi0EgI8SGdNi4IX8WQU7l5bkaPdTaDJizYHSLGNg%2BMII91XQRhK3oSCPiYZy24uEMBBUO%2FZmFnfZNZwJoUzncilEIFIJ4qkdDfOKOfxYAPvhFkvrKKRs2Y%2BiZHtyw%2BOmD6BQsiP8P6pSYWQmKNJGicvfhxOsL7ODC1iU6R6oT%2Fw0tiZ%2F2H8g2HZYG%2BU%2Fy6Zl6ipHK29LWz1Dc07T1S8v5KN%2FB9qpZnXrbrTVaiamgKnmEIOjvGbNmrkowHvmgXmHxl5xfDUh2y4JTPRnNLp86fj%2FgDKIKNmycyrj3286%2BYPbFqaMYWZbYWDgTONQ6p0zpO92jBUjIl0ar%2F4Z3qOPnobtDjHbzfqFdkuz75frKYnjwfK8slE%2B8LnOgPa9jBi6mVDMV5cmtdxUi3AQA7VfkHpWW0hAfwIVKzYxm4D38%2Bi%2FHpNLSCx89pdP7nXz37AAnahCedci6WehK8E%2BNpy6ac%2FVyG3WFRCLHBsLm2l1bgIdzW05RTX1SCpSh2EUxFqhOpT3f5p8MOU55Zz2udjjT51973cAusK3aaAyc11EG7iA7NE3%2FQC%2FTnXD%2FzUMT2kwITbLO0WPk7JyGRkVL2E2pCzjF6cf%2BwylWXl8StKX0meeIRGxm2SwTyWDKvwHtKIj0kwdE7m0tnkW18ha3a20bEkazYnsT%2FnZgYz7egM7Yb1KoVDOgLQj2bVzGuuSbP0u9hHDJ42yVYvpKxavnujfjEbd2p2wBecxNp7o6qNbT%2Fa1m3kbBAsPCPLenScyx8oFa3J%2BzWgVX%2FKeJEP282ebgDyYkeceetRxJP4BxmjjGGJNz9LFWLN4yRg2YJarH7hpttp%2BzVvUT1z2oF17Yq8Wk5L0gAXYdmcXeqd60OZ%2FoHgz%2FnVpJAt5Bs9ArejroT%2F19KY3vLtx484W7F7MMPLIK6la9ZngGTegM%2Bg1Tb5c0g9nuzapxMDvhNrxKHG1qfN7Zde0tcdGJzwKb%2BfdNHtB3ADIX6kaI%2FfALRg19A7NHejTEimVzt%2BEUXwRokD%2Bah%2BeZBS24ois%2FbRQFXRAeevxeJckcpckoaBcK89Rv24TF938ohmdfjzUrxNCqNai5ouaZeoc4NBY1F3By8JFLQXD9s7tQSIrqqQmZd4o1dXUK3niyjdgxr4mcPq4YGzq7v%2FEeuNpZ%2F%2FMe%2Fr30BVRiVjRvLFOsa8HeT06LYvktbWZQlKfd8sD4%2FvkqYzbf2S3z4oU4GZnnI%2F0zedHnUwA1VOMzWdrqV0Sf2pJ99pOCgk60TxKuSaFxZTYrIDFs7O1%2FMNZxWTRdMVE25yMqoxMulRAY2GqifCargGcEl3cfLcQwJKk63uQLjuLAgQNoeSmRtvqGq4WPFwlR5E3o9DE1SVnKSEPvNzDw2OmZjvtbkw146sUTBVHGxBBrRztgTGMbSVkz1GLISBwSQZ1foZ%2BgwYvvPs2lpfQzD2MdUQvQKOnBLouMnofka8WiXvncKi4uCtTz9iq%2BfSp3YTilb8QTKlaUt68zxkP3aOT4QOaPcZ7JsyKLGaliT405SzYzmetArlOJ3Vj47rmanVnLddhII2CrrqID3vchQUhm5TjoFZ7GuYjnRll%2F4E4vsFgYzSnpAPEcnobNC5nHHVgYmLZO0m7MzXtwFU7LYYYO2sBrurTqkr87z1OY5yiZvOyVoc%2BYmm5pSkMP88D0xg6hsUUfbZLdV0%2BSrVwVt4%2B%2B7wGPiAlxeGb8F49UHRpxSi3Ze%2FeAGDLJLAJcY8qgWjUhJHfpAYQYXVnIfQ0oMzTsKnooH%2BES1ruiTQE29g0kpvsy%2BO7L1k1wGNbJP6ve8r0hKRsAvXcqQEdAA8JuXFAO3z46GuGhV5m4U%2FQ4jWpRzeJfeUQUmfX%2BYSjkIUv6pSe6GtHCEUq1gWpKOiCN9kxdVvhnkNeSBqGSfjjYIDUEiaMUviOCy9SdzdZDzMWT2CFqYB4wp%2FpB%2F8l91Inru0ljdK7%2FA62BjFW3skNkBi8Z45Pas5nQdycFoaPT%2FB1HF%2BXbTSl%2BEG5rsIa%2B%2Bqsn1y8LsLhf2%2BWZki47all2C%2BoSlzy6CKV3Sdz1hgRVlR%2BAgkXFYgo0wj1QuPxDoVPgWjTyfwJ%2Fbk2jIx%2BuchJtVZ9FPclaYT78st7sma%2FPM32OqSjvJyJNAAEfvpy1tqsw4Dt2kGaSQX%2Byng809vsZTIPJHLCvwDM5jGooDlOPZekv05xmsfvD8fsEoDC0zSD762GV032%2F1tvlnwer42DZEGLJTcjPleD3PLT%2F4SxLw4AJClxN5j5F73goomrJWTAQSTraDOhx4ijJMDJGujDYQp20SWONxDli7QdA7RDLyajNihXAzxcfK1MmMka8bS6F55C3gKfmlLApmNEv%2BbAoTWAPJ3pNtEWPFHK5EGt29kFV60JocNMK%2F6n1AybcrKBKXShsMtNi4znGwnQ3V1VA0r5ppFMQvyGGRBmwbjebd%2B6Mut32%2BkfQojHJkZoI6GHSWURV9vh1gB%2FS7jEKos8mM2ql7GliHOeqL2xVdwTXeb9j3Ge37rLDd1VpGgQOpky0v4nf4CYAfumRKIfOvePnpangZaycd5Ee4LXc50VrIRRTH%2F3RRgPV%2BdcvlgNMRAp7M7xUPO07O5jhzfuzobqcE2vVaIxnW4E%2FKkxw4f10w9N0YifaiINs9%2FMLwYmlULS%2FlOoWgGLuCe6CUDBXE%2FLnopiILPEHxyR6cujrom6%2BzmR23T8ZKlNlpWGfCBB2K06uLQuxMpf5CCRNPYQtNecQiZOiaOCB7GKtrBlNMZLAeooFnQ3HTJYaFyhFuHQutuUzyMqk7Rk6pKTHTGEJRK7fhKwqImAQcDSYHy5to8s4vJvZZ5H41uMcZeOKK1pZoinVooNT543JQ26QNarwCND9wBZlaEhj240vXt0xtgubfV9Ed8XjH3mIJgcnvtImJHG5D6mgHHxtw8Sw1wWbYy9RZv%2BJVusZTz0yyDs4Wm3wpinRvvwcXOZg%2BHBf3jdr%2FMbFlBmESbdhAc91ZLUXJjl%2B4L5KZX%2B8agilc655uwzQYjWiCtmsBnw66mu6%2Fn3s5d4MXlXf0sGAGloyc60jYedAqjB8sJx%2FDluEV%2BA1Rty%2B88hy4q8YUSmOLzyu49gG7kBaCxb0h2XHUJDKiMk08mPnKE0JaigzcA%2BjaBsy4qrBQP3t%2FMosH4NQqWTaWugIsB3oqXSh2WAhed4q%2FVp1abrf3IEL1EI8XNr%2Bczb1N%2BMWNuaA59VKVG7wvWep03UITogCpySugS7iL%2FGlvU%2B4EsDiyrxybZGYmD7VXWyUufxvy3H%2BSJVo1N18vHxsb0bb5nTtUKYWRtffqE7cld5XQuQ9YTEYkqk8R%2F%2FJVJqQ2jNlGIxwTSyZBnJDdTZyJKKyndVx0C2mNrV5el78LkFlrpK4hZweTexJ4hKnK0hKmcPXLnQWwwaZzFi0qh8Xarp%2BcB8HwVEgxLNhOmeiLm5KyK2KZ2N4cIAU4GLKajhh07%2B6C34L42wvGb4tcHETivIuIIL1AddblxNkvkdzgO0tWlsy70MH0ylkypYFQWPbDa2Djfka6eTEXt5QeVLrxbWbOxLTL%2F4Fh%2BHZmnuanHzeGj1lb1P%2F2KWkDVN3XANA298JLf1lXQcCZWbOZwqQzmHyeCjfuRUF882fXjnyHDcMymzGnguX3Amqwv8ED3hviuFmk63FBvgnGJCUh2qwDmN%2F8mlJCpNnHA5KCFVjFDIwjjp1BKK4WtzgaC4RleqIfMycMMxgu8J2jMVkEcOv2GqavO85%2B99oMCAJRPKFmj3eacD%2BJGVpoegDzYNZsBDYmSZMrsMUw%2FFWnV2qQgoIIftymEwaONVXA128w7MSYq06bJoE2rR49PnoM%2FlPlxy7qSmwvVTV8qOfZolg8JkNthc8j2RajwmU2E0090GVEo1xGGNHM89EI9uOnzV7AhqsW8bzkPh1rFT0PoU5VJG1qgke2YQvfhGIU0N42dUwrBcWCfESbYagOUY6CjEs6dtYxMT6bBXegXiyEvuaYlO8QJit6DzeUKsBKKPVuMs8BzzOMIQ0aZu%2Fg42Rgo36noQmsnxXP5mnIqYmY2Eqd0Dkm7odvmq7feR8vZjR13yf0jJx9rDiEr16e0OC3%2BJ9HoEeUCelN%2BplV8A0%2Fl%2FY3xwWunMLzYjGBI8Z5p9afyqLdB7PeRcNzJDWZueG1W2SL1XkHp4dDIDtGfXXPk1vscGyQszS%2FtdMeIwkDlA%2Fse9OYOCIPvcC2LCJ6Aq1GDh%2FpeUXZWIcvd02NipNhAhDOnei5U3xKnqW4QtbezyeYv2aYs6xOE6i5uLD3hbCgFGelWFrjGocCJiOMcJy%2FNX8fCWTFy5MinnXwDzoV6WS9LuCGUP5MXnGWHxCwLc81AmuZFwOkln9CUZQtjvTfgbAIDDTxWvgfOiGy20pKIrGrwYMQT%2BND60uiVHxWqqTBOfv%2B1Z6WwZQDfWEDSnmv20YhETe9wvUl28R5lP%2FDTQsKKhK0lFVJ8L0jto6qlRspJV17DJ02WZ6WPKlICsn6xqXOlYKHwWjdfpi4TJhWcapPAlbakMiuMTmAEaCdwjnOD4KXEJApVbUrPmMXEf0okqg%2Ba%2Fwwsqc2tc13i%2BKS2%2Fj2Lui7hJbUnVQApiKzHqPfigowIr8YqrHnSTZ6SUPtDq6%2F%2Bf%2FJTQwjcgg64TiU0vigsNg1X8VUTkx5fWThuufKF8HpvxVE6VUbrWKuko7JcPaqZiZP4gblPagiHzPh5CLGE8vCZuKVKqo%2Fm%2Bssoaj7H8pPureCYSrz1EBmnHBv%2BlBkqtxKPwu0O0cnDD9iGT%2Fq41mTOQCjqRQm%2BgIFej766zRA3Zhq7TbsK9fWFFZx23jE2E3LyrZ89kVRnxiDLwdEbhs44%2F%2Fg%2B%2B78mOryf5Kf%2BLEOO%2BX%2F4u2YubePQRVVHmSEfxduhuEe0%2Fq%2FtXeaobyaYy%2BHrT97UholRUnmDPa39QteIgWUU5oFfZ4FP4DvK9nZ47DkJsCSgu9%2FLmkyfGFijsqTYr7PhFT%2F1SP%2Fv1XYI0Iu4qJlKPX5z7CeWpvYl6hsFXy1TbnkbJpWok%2B9gb29%2BnPAlb4tM9kTaNZa8o4FzLpVB9xZw%2F7CuP13Pk3rPhqtM5EwB2pT5sq9Ur95CkdiuKYzvUoMawO07Y5weZPnkTaVR0TrOAUjkgEQKQKvaGhaCfQB9lvq4Oo78KjA0SRpN3uzwr4RyjWqfiTMUdh1KK4vSMHQCAUjPISnL2xDeD2rNOVEENhDGaGLC69MnZaLaXjnp%2BI3kLzffKv9RVfmJ%2FjQzywv6o40OWdL2NOqesQ5ZbfIm1gfMwYiLOfUEs8lou1c9uVLmO%2Bqts4xh1Ckntcf%2Fsznf9S0km5hZUBsWGSroVldAvEoX%2BuRC%2BtY3H2bixGny%2FzDX2b4cAjmvXKSDH4ea81kN4Ka2YUyaQBcpWdTDeg8%2B57kUG2BQQy6yRabE4QY6aERCYT05dMJtJZazuM9hgAoIFF5ZmIswnz%2Bvku0P5OBjCTNb%2BVyBkTnlRgOISOuL0%2BjHp2h3w9GZViMIqM33br2zSZuWqYvDU6XCFz76TTdp1NsM9Orj1cVTDY8NPgqNQA2klXQLg4UvfqsAYGGSmj3EFRmIi3eZed5TqmjlxgPA4dovko0Hc1X0lrp0ge%2F5EdhYGSl5WzYA5UNmzPLeT6zLc1Qn5h61yCKE2FOsRqTfdF8Q%2BoevwTFH1Y6JiywnAWK4eVcrNXvXH2rQgSYxKQjlTZd3PTR%2FRNQKAVC3N8S%2BYVGRXE0NgOFT6XeEl3XhGtTjwdOCyllLNbRckKusY5n6UQBcpICHkHd6NtiE1w519vW40iAMmBF6KaI%2BTjuAHPRKFWT3brZ7JCh%2BF6I33k%2Bs0Mgy6rvKZbRe4UugqXBwDPIi2tgVTyx5HgoNigZKMNMJgM585CMM0wmzM6DsC39v05vg8lhkcpPbHpi0lvzWt7GFCNrgvxqX92z3GfTkmOqP8OzgPDrNuPRSNocUEFO9sIcSGbzCnYURFQ0KoMF44QHGnu4Ju0wMtINYuh49wuH%2Fqmcs9eSgUMtyHJcL0fD404ROUoMhV0oX%2FqWI1L5QHPiQAuDffnKPJ%2BREnIS7iP2DJIJqkOktrwbvai5zOMBXeMtUzXDd4eF7V59M2e825Bxxf6VxebWC1H3unY4Qhkhud8iL83xcxTBbkCETihe8OdsTGsSRm2yIle0Om9hwRSqwkF%2BQRDpjQN1QVf%2FmPmsZ03b9ogd7T2B98gk2lVhrJccXXGTNvEm2NkFiTm%2B6BNxzwg%2FXkT91mlb5hgrb4LyhSyM1wJGff6bv2lt45Agf4Im%2FDPsfbCi5pMxBCTM0BwpKDv29y%2FEea1WyO%2FoSyCt7Qr%2BCXjqwMZML3KPC%2Fhg5EZvo0Hv%2Br7FaXzM0bh1CIVqnKbsNq5aA5cImHRAiCOs%2BFGv7HUhnfNq4w004AEAvMWUrE7E0QGm%2F5bU5Fz0SFcDAfvuyuWOfwLq6SnYiry9Krm%2Fh2Ao7w5U9a68IDyJNC%2BjYp7sIwXwWE3DGsZTvdKc7kGVWcdBm1Y8WyuDSuxHSrwRd%2Fegb5KpqtyV0PKpUwKbIAejA5D6%2Bnn31yiTaJYyUl3dCgekOly1pq0wr%2BdjJ8B1HIJVhP41eMCnS0oJwP250XNxZqPQjlLDFaiItWu%2Bg1L5KBt11Ios2uzMmPiGTNQpBl992qmzrtR%2B6B%2Bu%2Fkq0OH1b%2FbwWTtjmDnnktl%2F81WcuS3gk5o3F9dWPSeywMPTXoTdjZ12gs1eXziOHxBO2aehu2a0w5hKjaGkkEK1ZDGnwYCrVWISt%2FfJpLA6tp02JENGdsFt3oq4Opc6u1uCzxnffCFEfOR9kO9e0nTeFETiib%2FhbPSWFO9jxh3L8n4fFpVHvr5Oe%2B%2B84b9ullpAOpopD0YdTQjPzek2LJi4uqUk2DhHQ4ghwIXXeHFT4GRSTNvZD4iCStVVn2u4bZZQlaREvVmDp6TbQxqxwDWgQJWP6%2BXrXSNs2prhI7WFeS%2FYOmCZixE%2Fnfdd5t%2FCOSLKwz2%2FQaOCaFQDAuj5a3FgfUrJQ35rcUmiGv%2BbnEvCnmYtDTYLV37DLilb%2BNZvsovx99zOwCDRop0aj717w41VMUU3Q%2FxJZBz3WNpkMsgHKKb7KdG9nc%2F6%2FMh7uHkdb2oOwpa5JqReCKKjPp3P9ue9vZtE4m3C%2FdOdfKgTRpZM%2FFGn7RQilxxE7JAa9Y1Mg3Zn19ionZrNsBHwAqu8AfogWScgprNlX6dvFQ8GQDuV3%2Bv3Mb9fYTe9lIsZL%2BMK%2BbWHj0kjWBxgs1ih13Fk9ZF0OWK6zH8NhOkmlKojf5R%2FaDk2uQRO38xoPt9%2BabDJ17x01eaiLNkTOAzYEu8N5DgB8WpyFBJEGHOLElBVbNVFZ7Zg4FxZOyJC7DaqL%2BevHCDY8IjGuWwKIc9DRYXHwEqn%2BGv9VqtQ4UG9zjpKp%2FdGF51I6hkof1CY%2BipZ511cpwToqLJDW5ia0Xkijwqy1i2sidbuQXt9yu%2Fd9spZHq61qrOoOPFAGBDWm%2FycplMjZivfz4jdlw%2B1P9ja0tYu7FlMjYIuyGTHFhaZuhGPfgO7Eh6Br5herDE5SFCeCeDFcCKNS6ZLxjpYm95YDVsE5zRG0xZMJIVHRqN5tUz7VYY%2Bl0E8DB4fvFJiFToAEqw3XU6GDQGxsadGdVZ5ceTsRMCxX8v0H0wlp1DcilSXx5c8zCburssEO0J0phgWUsdup6OkJBnRVPxRtZNAAiLXKN%2BPh9b7HYQf3J2%2FojIHfM5hwpSD35IHlnk5wJMYsTT4U9yyoQncfceKgAu1q6iW2sQqXLDThENfBdfhp8TNGVc4JBgpV3HeYUphw3vV%2FFM23dxw%2F3SfAOvpd5HLHckinic36Pfyef1TGBKzY6eHppNJYjZoeE3%2BM7yqafrBNg6m18DkaYgQKoiNuxcqZPvu01C49kKDY84i4wxOW9ka7dz2JDyjvtl6L8B1xgN4h9atXAvBqghAy9IdYgN9vaGG1zBIMJRsIIHODaqJroEmO5xRnL2SvEnD5ayf3jIRieXxqfb8c%2F2UXdaXLbSgz3zHeUDGf1eHeb2H%2FBNHhSCtvVttYTeUXHX96teJKKVUCPlR3LQJKdAL9l2mxh6QkqMNtyvZe0XvbCOmer%2FIeCqaCMmcFYcFXO6tUsefCAlyBAlJtxBmSBagxkpSTCfv2iFG0t6pe9jtY68lK8by%2FxS6dHXgMw4UfTCD6IA9Oj8VKMaH63pswYPH2XligfWu90J8lZ1hVNeeqIDfESAT7FKg6dZriIWh45ebPwv%2BdDCD9GMeV4DbdzRBqz8Alr8ctFr1e1%2BN41oodWkgO9iBraQqmNil2NwKJWWiV2RgDcr111B4x5inx1GZcAlQb23oc1DorBr34yTAkLz9VWiiBjvC8uMfR3WOJL71y4e2SenKsHvVCm1fxnyFD%2BUDk%2BOWUkwSaxpeVquxAafMFM42Bk7ba5g1sTXluiuknwoen2x2xdom7vXUDCEZSlwLcZcb%2FtB2sTftK2f086cbv4czxXwcPKhdIxSsYQUdcYn5ditiBUJytc61WBAszz9W9fUahDD%2BN5ftdc5HGjpcEzTLmEGpaD4GQ%2Fi1xj%2BSjqCzvoTL%2Fvvbe%2F%2BJc1j6FLO%2FdgGnDcxQ%2FauxRn7waTydRcwVJQTWQqPdkR6EaziR%2FhUcjBbrW30s66AVLTr67hhU1E5iH0gw3j903iIKJPTLML4RE9IPjj7PgOTsCV9AH9Xjxh9OUMVvBGGzLfOQBbm9tiz8JB3p%2F64olqtmB78McHs3ztBC81qhvMzW1WN6eaFUUkfoIKjWrx%2Fjhy5KIYodjZ787HJnP%2Bo8WshBfhm8vc3d2T43WVNBgE7mVTwowIp3xFk%2BcRR7jod4OeaIzjz%2B1icYCs0cS4tGFpwFVllztFeLdDE%2Bnu8Kz8W%2FwkdStlSqaoiLQCsjCrVd1j%2FT%2Fsyxuc7tU7eudmimAHV0Vo3hWuEtULduMsQ7KT92Dk30TYQLSKp%2FR6IFLRDTATPm0s5X2YKORvEXVxH3fkG8eQff9xYdbY2nbhzj59QqFoxe8LojyN2WcrYZEV3Z%2BWJQJsvAeBIaSWYqACJhIVGtdN%2B9JVby%2FrEDhpSCV2A%2Ba4YA1OEGVJBClTsfREBeHpx9HZ7h3zHc6yULzb7SWXasCtN3NRrZDCszpUgXA64Ah9hCvc7bAjpMjznSc664JODRSaMscRfJ6%2FVtrXPWP0hmk8xDlIveswQ6b6yRwOUnMOiQw5CWoumdbUf8FM3f9ZaRucNJdzcvc0nqiwuCVWdzDux2R0e1XYm%2FXDOK5GGEHDLIkMqOuJAb4jBV9VCClcI3TUjZOiswBhFDJa%2BGktnrrknseWGZvyWEkOBeKL0sR5fwvuEFlLnVGkbvG86Z2xsWFYI55f3OQme%2B5b1xD%2BwrVfpJIfvy9TpTXb0HjVYRugRubYO8D5djHX8q%2Ba5p%2By0rcQIAyG%2BE1JNV9nnJLXCLb4SgnuLOYAfpaHn3l6ebkty02B5hBAHCbbzRzY2S1O0vk28IDSJdlYcaY1TzSzckVPJhxAXsy0f2xWwMIkCI1GvjITJ5s3hpe3dyIq2LOM0svtu%2BNECt9WLlkEE2nrDTk5rSmIMEf1hDWFAeOm5C7Yagm2ydVWKCzChgoIzznHElILd9oNuasnp5BU5ta9Ncjzov%2Bk9S8KIIKF6EJuxbf9SUA9WIGJ45i4Hur2UTukDJdsYY3sBWasMyaoyerEmJAt6xGW%2FgqQGx%2BiBb%2FSBrL5IVJx5p02EPjlFg8fYny3N84vWXcQtSNKGv4U9FKih3ar1f4%2FXutRsj2PIWlXCnMcsEdzbaHCZxdvi612XTbVvf8saxM%2Ba6FuqoIT4GhNSq8vBc4oD2Ekr8Y8LmPFWx0trEFtqJq6Bh%2F3YQpH8uUZRcaw1cddJhLIbCqp3q0gox8hUGGJ0ccFhyVT95HuOG%2FZy7ZkT17V4hfL4pL84X5DsoLd%2ByQC7zi9Vq2rb65bPlLboX0b0IlO6xkibY6KggXQALrxYia2lN0jG2DMZkNXppmT31UXgNQoAhKtH8z%2BHCRMLQY1BKkC%2B2QuwUMZQmzWkmMoAJpNGcJX3yz4hN1btp0vExzS9xyiQ6fmA7l23u8mHokWVBltVBJxLkq4nY7ESr1uiu2rTyaK0Gvb9HkXqiKV3ak15UlJyrtSfduUJbsKHlXLj2W%2B2g5YzV9PHR6Wcsk%2B%2Ft4TZHBZWMwKsZWRInevE6oBLbx%2BUUYyO%2BWclyf6bXOqQKTPOxrvoWV7Xybz%2F%2FioP9mWNnZLZg%2BewJDbgZUGHPoSnkRFb1wgdDGCGqlh5dbjxazL4htXJ32bGyYRkw13Q%2BA6wuBFpFNa5RchJ8GcElcbN0DGWi9ZMFuvQVHg7suRl57%2BUwJ07tvjPBP97iQ9UhaKqDJx21%2B8OaJR4rHI6BHcZVgUl9nD8G66DhORZe2BsmJ2tR34vQAXVhg2exAToRyxTwRK5myb5m%2Bwr3eZE6YhR77Lp91vVQhPcBm7vodA7h6RLhBrxx%2BjC%2Biritc08tFAux59LJ5SgKSrb%2BnYuY2Hbtm6YN%2B2gEOO1bfQY4ifG%2BbbVcSowQGvKZpo5rnHgBpxs3dZaFGZSazLs70QDK201outxa9q9JrddeZUKJnZWvr%2FOm%2BinR7d8alL1r5%2Bu1ZhSNfza3eFOm4Wz%2F8CGwNR93r3tEAWJI895qlbtM8iBE6qSxIekgVlr9C%2BoxuB5zYbP4roljDgJXWCwXTHq%2FwEFY5Mfu%2FpGDD%2FWV8sT0jl0BB71AyivelD28pbK9gTa%2B%2BxvavSqo6Tn4FO5GETL1M7ZwRrGVkvim17IM5amlibro%2BS7NdBcUKBCI2Ary2sSAqmEeHRVfS018%2BHXqusmVjqTxsEFAcwzkK9%2Bn0cfWhFSq5olKmdU3kGSDZenVSzoOzrAGGPLIz1qvPW3Fn8oOx0CgnpXR6FR%2FNgplrRZ4yXGLz3nwap%2FCASpxkVOLqiHZYq91AHb%2FAh1fCB8CXs9YUdBSfDglM7dyvmqmdS0abOqOeKKBbHIXe0%2BVtiHROApdGy4vWBwM%2B%2B664K3ThnueXnkDni4uBXyh5KybSCVi35xpc4WWJwVYKVsnrzc32dEblIt6QdZCFxixc%2Fy1fsBj95b9ohMs9IQUGrfqhW%2BSWipO5ozGdUQof%2BI%2BrtjwHYpR%2B2l44H%2F4blOa6SFy57wEpvKwtjdAAwYR6i1I8LLw9orXk6pzSnfK87wFn%2BbwQ0bSuXu8x4swLuQNR3bLAtJyMi5ollHazMFkkvzCNGiCTUGc67w2G0CEYot1TL%2BB3%2FXGUP%2Bj%2FGJ0ZPhyYDu%2FEX0g%2FjK9yW9GC1K7oGEuJl4iTgAJ7vpHgy0X4M%2FzNyPZrnQ07T4iPVCG%2BytGg257JXzaZeppI7GvtCyECxFHdrp7PKgpwwqDf2WPcYcvB0zF5pFU49w4%2BNLg%2FfDO1%2B%2BUOo7Ou6fR2C4X2pWcCac36O0rZB%2BqnlbwVwpaETwm1QLhSZtbQNZQsjeaoqDup%2FfgW4poBuTrj63Q0M7m4TVk1TCCkhJlGw8W90Ly18vVUKd%2Bw74ph%2B%2FQoJkGzCHHKkc2cwyxsz1SnMhYdICknzN4RaoS0Yjv1VUa%2BWmabcnpxyOT8n1XASf3pW4rGhDiKaqpO2sXIG%2BXSoeGH0JIPJQYI7573gJMwPa3ScElk0p1%2BWdR4egJk7t3LDGqUPsbVlHuHLMls6NDd6OoFagv%2BtNc7QiyozsN3Eep4bq0inTEdWvU8YXBd0WyolsqrZuYN58AFtCLrKdSINrOIW1iiJk%2BXOnJJFMge0VU6yWCiHZejKRTEY%2F7TGaQh5QJZImmKGe5r6LhCStoMtvzH4GN7daMp2NdDSaxVcxlWuu%2Bah9aLByHgkVILsqeRaRBHj1e5kpag%2FnJ3%2B9L4cmpVyGB7h%2BhtpRhV1x3MdXpMI6W4ZyE2Yx97%2FMY7A%2FOwR80BXtZJB%2BUvQ3KmROYejTWjJy1bKVy50Z1o7s09I4%2B7evpby7nEZ2ed7KOImGEpUms2vxinS5dBEBzyRZPqAmehJR0T6VgoN8gFDgU3shfjmkJrzFgZ%2FPhSbbD2MsNOZ8xfh70GOJ3RvVjcWKjnkvt8r1EHbD5r6wSuahgFsIoGq8Yc6iUzcC9Q45NzdqXZ7%2BRlHiy4liaDvdah4EZ6zqhKI9WQd3jPV%2BhMw6AxwIkfBClVuk7GuVxcAYVSZaLEPTCVNxunR40LzZL5c9%2FXINxxSjwtkn7EhUKud60p3NtILzk5hUeSeQE6QYMsqmX5t%2FcbedsnOoqQ9S5o9scXhiHuC07aPpXqeWGOojCcBbN6WAYZ19cMS3E%2F%2FN3boApmO0EAWs3t7Wwok7t3s%2Ff2RaW0HzFKk68HWyyxzJQk8h2FIMx98HCrU%2FafEb37SL7ZkYiYPivB6hNnKECB%2B%2BfFfEJUetiR12ItYNnbmk3cAaeX3PIpzZ2jHfadDiIKbkuseUrJx058Fr%2BzjTh95Z%2FMewG0%2B1OxphPncFN1FwL5lSKwMpYHocMQAKa21a%2BvcYYQV1mapEor4d%2B0L2LfcOb8EZoSJyYvXD74kKK1VVNJo0yjoBNEmSxXl3Hn2kj8ZUrm%2BaZJKgvGnr4vNebXX1et3N0ytVLiKIhgfxu17bmZ3OnPyWu1Lj%2FJn4PRmca2pkgby9jZFFo%2FC9ChnxcTMOO2WkGtui42jyJMlJXjabWxEPs6gyjPGU%2BcmOH0iDf5%2Bskw%2F5H%2BooXKeaYp8ZHx%2B%2Byp%2FHY1qJ5qrzfMYMBqiWFn45EiH0xpeeGyplRF29HA7vxwRdBXgFwVt6ktAOGRnUY1Xwzp%2BKH8hKFT8weWlmwXUluqg3yF6ctrMkbU67K529FUGD9WORNOGfY7WFnO%2Fq7UpEDsm1OTA4blPoggxykwTLaM%2BfSQDugR%2B5YQKcFNZLue%2Fc0D2HcOl%2BMnlbJv5s7o6uaz59sRb6eALpYiSe895BWifR98oRwDGSxYNVUEjt0qYldBtyQehB7F%2B1upge2T1REfjNIhlHTJkHLOodqWxIoXnG%2Fi1PuI39ppvi1tuu%2BRxhF84fgt1t95iTG3DXkk2SVklxEIALugu2nQl%2FlvhzHQRjo9tHctEg%2BFro2Lu3CQ6ieui8P6ZU8OOoND6YD%2FGsl%2BA4A6vp89VINmDeVoBgwoGcDbekd%2BEH4h67azkl810eqthw9zDLZ2QkTeZaVDNZt9UjLcGCgQsZ4ANjDZCQ0KkgjAUyPT7HeXIuF3a4L%2BkdNHRYfgWpMAJLDL3NGLCnHArIgW79kDe6DEmOAojoS%2F5XyVcVh%2F9%2FHmXTsYaxUSrHY1u0ovAfUgDhJkHaP1vwtxG4PPOXhNhZwHIE4XKg5Dw3gsldAL2OmPIkGA7wWn9Qd8FZOanozbdPR50OuqrmQipx6dQ8Qjl5%2FQXXRKNH4EZmC34du%2BP8ve%2Bb1n%2B0%2BHmXqE3LtAEUkVBjntjGjstF%2FzVINmO9vBM5hLhUhP0k1Du6%2FolIFvnwKvQbzK67uX8xdJs20iD0Cpjy4CsRwUie8IIZnKzO3Nx%2FxaSM5Lh%2FkBIKByHVjANLYR0r9ENlJLCabM3VyToH2CUGyFxtKy5mGFG4TFPmfGbSybAOaKOm2xRm15ouOqEIgaETRDeTXGvThS%2F92vCimOCIUym6SLs8SXNXxhnsw1vz6IEjB3HFPdbefX04Gv4ywRMH%2FFJyY1Sg6bu6oVAX4TbiP27gR2a1xH25je%2BRW15c4Ug7AVdyG3sOc0xjEImRXDl3ztVoTqQ0GidtWkgYNuwMR06pFO%2BBBR2%2FOVqX7wY5yHYJgDn1YSTfqNF%2Bag2UjWm8CBYhrTbLHI%2FVQtNKPtbktKcVYfLMI2uHL0MbjXcTekC4KAPGkHhQEbENY%2BELTemWkbQkqe4jZWrJ5bMoaOEb3c%2FprG6OBv1uGKb9yRhdES8SWGbrG%2BxkBDqDEO63ovrZ2KlKxQb7CGiDmVuiuVqhs8A%2FvR%2B%2Bar78xa8uRkHxjZY7J80LSy6kpKY3QwOe1%2BAV%2Fm5k0j8KwiJqlUbtKC7uxwMAOPgTovjKrh958w7DVy1wn5SyAP8rZcLIh2bJ2zVX8Ctv%2BmMKjXqO%2Bsh8Sr%2BdbWtDgF2pV4bqVPIRWWgC9Um2VtJTzUz5oluNFyQ0zpqaPKs4CgDA0KxbXMt3weywR2r2ePrV6%2F4bDj90z%2B%2BO08KvNJA6HWD5GQ7d6PS3VAUXJziWf3ijnD68hmc3G%2BG9hheQlZA2BOcJCJa4Xp5XDI7Rbmk1LvX1hKAt%2BwTAdKpIPLjINpKekxuIRdQmK0837SOxtS3iz1bBKsvPSulPxGtMyjC98iB8YtHnP4vQTJwCd7VRZkO7Y7fffmbkJrG4V4s%2FnX2mWaKvgrzXSSNcDWYW%2BVJ55LLqmHp1hwQePaf9v1ZF1FNMujLJqwQ%2Ber0u9V3E0hoim8%2F3b6tmfPHcD6D%2BFtKmigWvROpnaFSZZaZ4dREvwzS5oZ4wIJaCH%2FdQQG4eO37RKhODpOCVhzLFJvSQscFSRYsXEvlhI%2BIuQhmIfCORXZz%2BMJbqfSSYRRWgYZ9Fe6OWSkQRYBrAqMlu1d7k07qk8Qk2hJ5k7Y0i3irWjWnmUJ1g4gaWz9GQXmtcjoCzdTLGnOAMS7XYfUCiAo6Bmg%2FTrSmc0WPOq84MCm7%2BYwYGuWTrh7y0yYnLRZjOfFsP8d9gKPY55Gvk2ywrwsARCH4TnsL6hH0nZlX1NbHFyhrpN2o%2B8Bl4jqRmoc%2BZphrbljXhwIQXeZI5Xu3YjhGT3cEfn%2FocF12MhH%2FaJOgQq7G7lbyci5xfHB7cu6YCgipJ1%2FKzamKTmPNUBF9iG3XhbB9WpBYCqXRBwMcPxJ0KTqSKH5sPOhSM4aIO9pEQGcf6npVXGrB3rbxrri54h6MQrz6A%2Bv6SXnXqSjRmiHLdwI7Qbxawe2MAi4f9RQFVEyhrMNpwpdUqVRlzoJJduXKtzhgvhLksv63aVv9l7Ed6ECxiN50aZE5tODPhzeiJ8gcjj9NrfW5j0xV7fjWwY4UnQ6vyh3%2B5v9CV1gRfP%2B9shR%2BQLpsxlc61xg4nge%2Fe085ZD%2BiM%2BVuoQniZaF3fjE847qLLkqVqgZu0S8kwzMLYRDMJhPzNmCUjIJyx0gXRuBlmhkUKBFwo0ZVS9rno7XColJlxSOhKq%2BOE2lMn9TXKHcWq6jtCIuLv999CNJBXzCr%2B4Y2c%2FiuBjWDpvQMAS6btbA9jCA4dkR5YVCmB45OK5kdv1k0jus%2FgE1tsPlOu6LjcvlpIWvJgBppWjsUbGmkozM06uiWIHjKX327RFbnd7f41ljLU6FwVCSvb7LV5qPd5TOa%2FQwFzNZYgc0n37dJwKMkb1T%2F1senx90Ja9S5MM4xXnga1cPqxKUBw0ol%2Baz7ulDZzGVcWx1poyLwVDOmcwGLAnecMijG8rsm%2BLKD1t1WEeUpfxUsXbqzUslqJOobtA2sfje00u8e%2Batm5AHtem1MaP4XjD5yazxzkgR4%2BW%2Bo0Tos3N31%2F5AIPZr0jXx4Y23xTUmW2C7e0jb5%2BruP4EEkrlYNQAKcCpwXJAosjyHL3RwUXBe12z89uvJT9cSSu2fVPLbwcdjYy8l8aVFuGXjc2Y%2FSJd%2BpZD9xew1OmCjv00M%2F839OymuuLcMjWOmq439pyrPxuk1s68kCATYh7YEB1I02dl7cchD1KkiXeyBWJMZHqwQ4E5rnIYF2NdZ%2BVtlBnjWRvkqWJ3%2BoayPn9wDu7d0RRhpt4WlXMh%2F1nS97%2BEpDFZKVfRaMGgZ4UTLQLxSPqmnkS0TB4IUN5EmGkqkO9fJeNaaa6%2BoP7Zs0%2BXvdiYw5vdl3T%2FZGNBuNleJcb5%2F5sJZ1uKqkeFGMMCQbuPHEB1fCmG%2Bg6C%2BpqK0qDilCn%2BHi%2FxfzFyXdaHd5Ysz8W2JRDqsQy3KKM58rrQS3nOz1TCVp3CPL1Ua4tgPUap7%2BtX3pwr2cCDreduEJe6P9dCaib%2FqkLTc8v12AVq1VQOYB7xgJgkTzaf9Qtfgx8gw5lANz7XKu7c87IDwfS8%2BL2w8UDUTWWzLRCuIhCwa4EaoUSiiMXE7X8Srf3aDF4p6xEn1A3OhpuK%2BMPE1TqpOoKOy45E%2BvItKTTb4Xe%2F6YDiRYNMWhIlS7tkNQ911Bvj%2BpH8DnxPr3SbPBPYU1qqPUdozc9%2F15zAfoIeK7RMINGGIS1E8%2FgARk%2FdfGbDHN2RPdmakz6J8zTELM%2BalzMCAx6lgOfrEp2Q8FFteLN8smm4EPjr%2FdRXp9rasrCEpl0dbqEoBp48bJ3b8dLWhflOHkXkYWftOeKsKRNMXP2tZrCF5M7XAm51CCAnS%2FBaRcS8OavHKy7bVfviEWVTixukKzC2WXzCG5mi1ZNjSLNjxWweSZsC%2BdlwITinzicpSr56WLoU18QuZj3IAo%2FCfVORhyU40biw8jcNgyMJthStgOj3fTN5bRgeE7OCQDOYuZX9jCUvueQKROuStQ6Fsa7KRL9j72SUir7RKQbKgS36HQdiawb2lNyz5elkvqqYKpbgndUz3s7fh%2Ffu9FW6g%2FBcPoBZuCrwMCsUERXqijmK8g9RKdEoy%2FZt617qjvfDdP417FGq5tsH5RFmIEw2QGMU5y3siX5ur5otPbJHZPnZe5X%2FDjQWG5JtgtOBezWCP1Fs9azqsMvypo6o1LYgI0N9OMczhs1sgteylgEvnesckCTHlpuJ7rox4cs2tmt%2FbiK4mcHFqLw%2F9CC3IisX7Epcpwxa7FBPxk1h2SvFtcxGEE7woajzmMZqVSBS5sJKtdPJz81ac7skmoEPjF%2FBw3wsuAD2YZOrGJEZpxdXCVGdCfy3pXLsWgYC3E7m5SG%2FDDxaSl9Gokx%2FDFXC%2BnsbVQLWq5SGNBMH4CgJjWn37cA9EfGaKTVz2ObmitM6yYVTH%2BfMviMDDeuZoj1ED%2BLWi2ZvX5rJ1gmp%2FLTiYkW0ganzGgUdAnq4Z9qxZ0LTmSoyViCvpA%2F8PqU%2F6Qt2ZbPN%2Bh%2Blc%2F5TA9L3Pj6KbiTkYCqjHb9OuD6es%2FnU06kyav7bs%2B%2BfD7TIAwjFRPgMLfEw%2F99%2BPmLs%2BUPluxyniAd2lMxyhsrTpJdk%2F53kosAfqRBOnK0LWB%2B0ME6ysnIb2l0q5Gl5tocRptJJ9hO7Q5upFy9fTqkrh%2FpyIqxaAfue1treBIHHrcXsBi6LINCAQ%2B8c%2F4aKotYjtqB%2FmeCvNuqPvRfCZ0CxFsnVBmXF5dIh5%2FcYUAANw1HYXjIftpvR2esvj1UjfWUShhtTUyblzm9kD%2BqjCGH9XZLQ91zawHoY%2Bpy5cvrONmsv98tZm5Kp5UMUVfan9onuypL0OLlJnESswiYNd2qLdvMvrfw6VFGC1NNS3NlrGGFWT%2F%2Fw6bhxLxMIiw%2Bcc2qW3Lk2ITTaguwVRybQn8V7WC%2FnbdUJ%2BFnLE5M%2BWSR1h13IWvxSKM3sXAFtZxz9JEMkyyPLYdVHL90D%2B3i%2FRxT0i5Y%2BKghFOJOM2UhSP5%2FiTFpUpTfZYNlq93dWGdkNqO2KlcdFjhw4vyOKwDSD0xWlheVJ4zGCfcpiEV1P%2BNdJxB1DzWsj94Afu3oS4I%2BQItCJTviOKfy2sH5PSRIgGgOnCITylU5v%2Fl5xTkwNDc6OEoq5Ri6HuC4ircbiW2qQY%2B28U455Z4pbUa6khlCGWD1sdOEiG8jspnfQWlkguspWZgEWiQ4h2vwa5ZlI9rHxKhnepxY608faO9grvRK9IEFxMvxJfd6%2Brn4RAObdUGhOEu5%2BnhuTcDAxibx7%2FDkNXUxNhtpOomVxZVp%2By4pM2ZGllB8ly1stqygQmtYKA69Z1MtK7DASsCIvs3tugEAnfg0GPYgDOkHaNPomubWxmFSUfKjrByX7t%2FT0AGHxuoxfbMQTyEJVWmt%2BUw4aG4krfiDRPQnKElYS3Kb5YLEuDEILkWkCV%2FkrxLYkj9MuPaLWwOc2RU4INpnhDL9PjbviK%2BqR145%2Bo93HElQHJ6BlkEj63AUicJChy9MKNJjeFpv%2FlxeNYqlMbMQa0Q8lEcqG%2BYtvfQW8s4L8b5NFLGSXJPO5L94OHnfehtC5FrpfE32wvvnEob7OPW9EGPq3DpCYe0uU6WfOeZmdNAhuElWnAaYCMuJjowj%2Bjp8Clpu5R94pf1HYhhwikQvJg%3D%3D&&__EVENTARGUMENT=" + pageNo; conn.getOutputStream().write(body.getBytes()); byte[] buff = new byte[62768]; int count; ByteArrayOutputStream out = new ByteArrayOutputStream(62768); InputStream in = conn.getInputStream(); while((count = in.read(buff)) != -1) { out.write(buff, 0, count); } conn.disconnect(); return out.toString("UTF-8"); } 是不是body有问题: Exception in thread "main" java.io.FileNotFoundException: http://ggzy.jiangxi.gov.cn/jxzbw/EpointSecurityError.aspx?ErrorType=CSRF&ErrorMsg=Cookie%ef%bc%9aNo+CSRF+cookie+supplied.URL%ef%bc%9a%2fjxzbw%2fjyxx%2f002004%2f002004001%2fMoreInfo.aspx%3fCategoryNum%3d002004001 at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1835) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) at zfcg.ztb.JxztbActivity.getListData(JxztbActivity.java:127) at zfcg.ztb.JxztbActivity.ListData(JxztbActivity.java:68) at zfcg.ztb.JxztbActivity.main(JxztbActivity.java:30)
jqgrid 分页
刚开始接触jqgrid控件 开始使用在使用过程中遇到了些问题 jqgrid怎么加上分页功能啊? 我的jsp页面上的js代码: jQuery("#list2").jqGrid({ datatype: "json", url: "testaction.action", colNames:['Num','编号', '名称'], colModel:[ {name:'sc_id',index:'sc_id', width:55, sorttype:"int"}, {name:'sc_resid',index:'sc_resid', width:90, sorttype:"int"}, {name:'sc_name',index:'sc_name', width:100,sorttype:"string"} ], rowNum:10, rowList:[10,20,30], pager: jQuery('#pager2'), sortname: 'sc_id', viewrecords: true, sortorder: "desc", caption:"TestDemo" }); jQuery("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false}); } body里面的 <table id="list2"></table> <div id="pager2"></div> 后台的代码为了测试方便写死了一些数量 public String execute(){ JSONObject jobj = new JSONObject(); List<Pis_servercomponents> ls = new ArrayList<Pis_servercomponents>(); ls =serverservice.getallsercominfo(); Tabdata t = new Tabdata(); t.setPage(1); t.setRecords(2); t.setTotal(1); t.setRows(ls); JSONArray jsonArray = JSONArray.fromObject(t); String str=""; String ss =""; for(Pis_servercomponents ser:ls){ String s = "{sc_id:\""+ser.getSc_id()+"\",cell:[\""+ser.getSc_id()+"\",\""+ser.getSc_resid()+"\",\""+ser.getSc_name()+"\",\""+ser.getSc_type()+"\",\""+ser.getSc_status()+"\"" + ",\""+ser.getSc_positionX()+"\",\""+ser.getSc_positionY()+"\"]},"; ss+=s; } ss =ss.substring(0, ss.length()-1); str="{total:1,page:1,records:2,rows:["+ss+"]}"; JSONObject jsonObject = JSONObject.fromObject(str); try { this.getHttpResponse().setCharacterEncoding("UTF-8"); this.getHttpResponse().getWriter().print(jsonObject); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } 可是页面上能得到值显示在表格中,但是老是有js的错误?怎么解决啊? b.jgrid.formatter is undefined 页面上显示的页面分页工具条也是 undefind怎么回事啊? 是js中要给后台传一个参数的吗?
查询oracle列表时遇到的奇怪问题
<pre name="code" class="java"><p>做项目中遇到一个很奇怪的问题。 <br />同一部分内容。需要查询某一个外部指定用户密码的oracle的指定表的记录。 <br /></p> <pre name="code" class="java">public static List getDbConnByDbID(EntityDAO dao,String strdbid)throws Exception{ Connection conn=null; List ls = new ArrayList(); DbSource db = (DbSource)DbSource.getDbSourceBydbid(dao,strdbid); if (db != null) { String DbSourceName = CommonTools.getStrToGb2312(db.getM_strDbSourceName());//数据源名字 String DbSID = CommonTools.getStrToGb2312(db.getM_strDbSid());//数据服务器名字 String DbDataType = CommonTools.getStrToGb2312(db.getM_strDbType());//数据库类型 String DbDatabaseHost = CommonTools.getStrToGb2312(db.getM_strDbHost());//数据库服务器地址 String DbDatabasePort = CommonTools.getStrToGb2312(db.getM_strDbPort());//数据库端口. String DbUserName = CommonTools.getStrToGb2312(db.getM_strDbUserName());//用户名 String DbPassword = CommonTools.getStrToGb2312(db.getM_strDbPassword());//密码 if (DbDataType.equals("Oracle")) { String url = "jdbc:oracle:thin:@" + DbDatabaseHost + ":" + DbDatabasePort + ":" + DbSID; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); conn = DriverManager.getConnection(url, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); } else { System.out.print("无Oracle数据库连接"); } } if(DbDataType.equals("SqlServer2005")){ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String URL = "jdbc:sqlserver://"+DbDatabaseHost+":"+DbDatabasePort+";DatabaseName="+DbSID; conn = DriverManager.getConnection(URL, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无SqlServer2005数据库连接"); } } if(DbDataType.equals("SqlServer2000")){ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String URL = "jdbc:sqlserver://"+DbDatabaseHost+":"+DbDatabasePort+";DatabaseName="+DbSID; conn = DriverManager.getConnection(URL, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无SqlServer2000数据库连接"); } } if(DbDataType.equals("MySql")){ String url = "jdbc:mysql://"+DbDatabaseHost+":"+DbDatabasePort+"/"+DbSID; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,DbUserName,DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无MySql数据库连接"); } } } return ls; }</pre> <p><br /><br />调试的过程中,在conn = DriverManager.getConnection(url, DbUserName, DbPassword); <br /><br />的时候就错误提示了。 <br /><br />错误提示如下:</p> <pre name="code" class="java">ava.sql.SQLException: Io 异常: The Network Adapter could not establish the connection at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) at oracle.jdbc.driver.PhysicalConnection.&lt;init&gt;(PhysicalConnection.java:439) at oracle.jdbc.driver.T4CConnection.&lt;init&gt;(T4CConnection.java:165) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:171) at com.catalogEx.dbmanage.action.DataSource.DbSourceQueryTables.getDbConnByDbID(DbSourceQueryTables.java:85) at com.catalogEx.dbmanage.action.DataSource.DbSourceQueryTables.catalogExec(DbSourceQueryTables.java:45) at com.catalogEx.dbmanage.action.ActionService.performAction(ActionService.java:50) at com.catalogEx.dbmanage.service.DbManageService.service(DbManageService.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:103) at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96) at com.caucho.server.http.Invocation.service(Invocation.java:315) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246) at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595) </pre> <p><br />可我本地用plusql是可以打开的。 表也是可以看到的。 <br />jar包也是都有的。 <br /><br />想让大家帮忙看下哪里有问题。 <br />另外说下,我之前用的是2000系统这代码实际上是运行过一段时间的。都是正常的。 <br />最近因为要新加功能,机器又中了度换了个2003就成这了。</p> <p> </p> <p> </p> <p> </p> <p>我重新编辑了后错误提示为</p> <p>he Network Adapter could not establish the connection</p> <p> </p> <p>真的是</p><br /><strong>问题补充:</strong><br />后来我把代码弄成了一个简单的测试程序 <br />try{ <br />  Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <br />Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@172.16.1.99:1251:chen", "dbmanage", "dbmanage"); <br /> }catch(Exception ex){ <br /> Logger.info("ex="+ex.getMessage()); <br /> } <br /> <br />提示错误为:Io 异常: The Network Adapter could not establish the connection</pre>
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
立即提问