From 407b631462934c95b46eccca4d5e9578f2efdaff Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 2 Mar 2011 16:34:21 +0100 Subject: [PATCH] Embedding the Uuid lib, deleting it from the embedded repo and dropping the jsr166z.jar --- .../src/main/java/com/eaio/util/lang/Hex.java | 215 +++++++++++ .../java/com/eaio/uuid/MACAddressParser.java | 116 ++++++ .../src/main/java/com/eaio/uuid/UUID.java | 311 +++++++++++++++ .../src/main/java/com/eaio/uuid/UUIDGen.java | 364 ++++++++++++++++++ .../main/java/com/eaio/uuid/UUIDHelper.java | 86 +++++ .../main/java/com/eaio/uuid/UUIDHolder.java | 42 ++ akka-actor/src/main/java/resources/uuid.idl | 55 +++ embedded-repo/com/eaio/uuid/3.2/uuid-3.2.jar | Bin 15009 -> 0 bytes embedded-repo/com/eaio/uuid/3.2/uuid-3.2.pom | 8 - .../jsr166x/jsr166x/1.0/jsr166x-1.0.jar | Bin 72794 -> 0 bytes project/build/AkkaProject.scala | 3 - 11 files changed, 1189 insertions(+), 11 deletions(-) create mode 100644 akka-actor/src/main/java/com/eaio/util/lang/Hex.java create mode 100644 akka-actor/src/main/java/com/eaio/uuid/MACAddressParser.java create mode 100644 akka-actor/src/main/java/com/eaio/uuid/UUID.java create mode 100644 akka-actor/src/main/java/com/eaio/uuid/UUIDGen.java create mode 100644 akka-actor/src/main/java/com/eaio/uuid/UUIDHelper.java create mode 100644 akka-actor/src/main/java/com/eaio/uuid/UUIDHolder.java create mode 100644 akka-actor/src/main/java/resources/uuid.idl delete mode 100644 embedded-repo/com/eaio/uuid/3.2/uuid-3.2.jar delete mode 100644 embedded-repo/com/eaio/uuid/3.2/uuid-3.2.pom delete mode 100644 embedded-repo/jsr166x/jsr166x/1.0/jsr166x-1.0.jar diff --git a/akka-actor/src/main/java/com/eaio/util/lang/Hex.java b/akka-actor/src/main/java/com/eaio/util/lang/Hex.java new file mode 100644 index 0000000000..7794059517 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/util/lang/Hex.java @@ -0,0 +1,215 @@ +/* + * Hex.java + * + * Created 04.07.2003. + * + * eaio: UUID - an implementation of the UUID specification Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) + * http://eaio.com. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package com.eaio.util.lang; + +import java.io.IOException; + +/** + * Number-to-hexadecimal and hexadecimal-to-number conversions. + * + * @see UUID + * @author Johann Burkard + * @version $Id: Hex.java 1888 2009-03-15 12:43:24Z johann $ + */ +public final class Hex { + + /** + * No instances needed. + */ + private Hex() { + super(); + } + + private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', + 'f' }; + + /** + * Turns a short into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the integer + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, short in) { + return append(a, (long) in, 4); + } + + /** + * Turns a short into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the integer + * @param length the number of octets to produce + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, short in, int length) { + return append(a, (long) in, length); + } + + /** + * Turns an int into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the integer + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, int in) { + return append(a, (long) in, 8); + } + + /** + * Turns an int into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the integer + * @param length the number of octets to produce + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, int in, int length) { + return append(a, (long) in, length); + } + + /** + * Turns a long into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the long + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, long in) { + return append(a, in, 16); + } + + /** + * Turns a long into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param in the long + * @param length the number of octets to produce + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, long in, int length) { + try { + int lim = (length << 2) - 4; + while (lim >= 0) { + a.append(DIGITS[(byte) (in >> lim) & 0x0f]); + lim -= 4; + } + } + catch (IOException ex) { + // Bla + } + return a; + } + + /** + * Turns a byte array into hex octets. + * + * @param a the {@link Appendable}, may not be null + * @param bytes the byte array + * @return {@link Appendable} + */ + public static Appendable append(Appendable a, byte[] bytes) { + try { + for (byte b : bytes) { + a.append(DIGITS[(byte) ((b & 0xF0) >> 4)]); + a.append(DIGITS[(byte) (b & 0x0F)]); + } + } + catch (IOException ex) { + // Bla + } + return a; + } + + /** + * Parses a long from a hex encoded number. This method will skip all characters that are not 0-9, + * A-F and a-f. + *

+ * Returns 0 if the {@link CharSequence} does not contain any interesting characters. + * + * @param s the {@link CharSequence} to extract a long from, may not be null + * @return a long + * @throws NullPointerException if the {@link CharSequence} is null + */ + public static long parseLong(CharSequence s) { + long out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 16; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + ++shifts; + out <<= 4; + out |= c - 48; + } + else if ((c > 64) && (c < 71)) { + ++shifts; + out <<= 4; + out |= c - 55; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } + + /** + * Parses a short from a hex encoded number. This method will skip all characters that are not 0-9, + * A-F and a-f. + *

+ * Returns 0 if the {@link CharSequence} does not contain any interesting characters. + * + * @param s the {@link CharSequence} to extract a short from, may not be null + * @return a short + * @throws NullPointerException if the {@link CharSequence} is null + */ + public static short parseShort(String s) { + short out = 0; + byte shifts = 0; + char c; + for (int i = 0; i < s.length() && shifts < 4; i++) { + c = s.charAt(i); + if ((c > 47) && (c < 58)) { + ++shifts; + out <<= 4; + out |= c - 48; + } + else if ((c > 64) && (c < 71)) { + ++shifts; + out <<= 4; + out |= c - 55; + } + else if ((c > 96) && (c < 103)) { + ++shifts; + out <<= 4; + out |= c - 87; + } + } + return out; + } + +} diff --git a/akka-actor/src/main/java/com/eaio/uuid/MACAddressParser.java b/akka-actor/src/main/java/com/eaio/uuid/MACAddressParser.java new file mode 100644 index 0000000000..c077147470 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/uuid/MACAddressParser.java @@ -0,0 +1,116 @@ +/* + * MACAddressParserTest.java + * + * Created 30.01.2006. + * + * eaio: UUID - an implementation of the UUID specification + * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package com.eaio.uuid; + +/** + * The MAC address parser attempts to find the following patterns: + *

+ * + * @see UUID + * @author Johann Burkard + * @version $Id: MACAddressParser.java 1888 2009-03-15 12:43:24Z johann $ + */ +class MACAddressParser { + + /** + * No instances needed. + */ + private MACAddressParser() { + super(); + } + + /** + * Attempts to find a pattern in the given String. + * + * @param in the String, may not be null + * @return the substring that matches this pattern or null + */ + static String parse(String in) { + + String out = in; + + // lanscan + + int hexStart = out.indexOf("0x"); + if (hexStart != -1 && out.indexOf("ETHER") != -1) { + int hexEnd = out.indexOf(' ', hexStart); + if (hexEnd > hexStart + 2) { + out = out.substring(hexStart, hexEnd); + } + } + + else { + + int octets = 0; + int lastIndex, old, end; + + if (out.indexOf('-') > -1) { + out = out.replace('-', ':'); + } + + lastIndex = out.lastIndexOf(':'); + + if (lastIndex > out.length() - 2) { + out = null; + } + else { + + end = Math.min(out.length(), lastIndex + 3); + + ++octets; + old = lastIndex; + while (octets != 5 && lastIndex != -1 && lastIndex > 1) { + lastIndex = out.lastIndexOf(':', --lastIndex); + if (old - lastIndex == 3 || old - lastIndex == 2) { + ++octets; + old = lastIndex; + } + } + + if (octets == 5 && lastIndex > 1) { + out = out.substring(lastIndex - 2, end).trim(); + } + else { + out = null; + } + + } + + } + + if (out != null && out.startsWith("0x")) { + out = out.substring(2); + } + + return out; + } + +} diff --git a/akka-actor/src/main/java/com/eaio/uuid/UUID.java b/akka-actor/src/main/java/com/eaio/uuid/UUID.java new file mode 100644 index 0000000000..6c49bcd1c8 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/uuid/UUID.java @@ -0,0 +1,311 @@ +/* + * UUID.java + * + * Created 07.02.2003 + * + * eaio: UUID - an implementation of the UUID specification + * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package com.eaio.uuid; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +import org.omg.CORBA.portable.IDLEntity; + +import com.eaio.util.lang.Hex; + +/** + * Creates UUIDs according to the DCE Universal Token Identifier specification. + *

+ * All you need to know: + *

+ * UUID u = new UUID();
+ * 
+ * + * @see + * http://www.opengroup.org/onlinepubs/9629399/apdxa.htm + * + * @see + * http://www.uddi.org/pubs/draft-leach-uuids-guids-01.txt + * + * @see UUID + * @author Johann Burkard + * @version $Id: UUID.java 1888 2009-03-15 12:43:24Z johann $ + */ +public class UUID implements Comparable, Serializable, Cloneable, + IDLEntity { + + /** + * Hasn't ever changed between versions. + */ + static final long serialVersionUID = 7435962790062944603L; + + /** + * The time field of the UUID. + * + * @serial + */ + public long time; + + /** + * The clock sequence and node field of the UUID. + * + * @serial + */ + public long clockSeqAndNode; + + /** + * Constructor for UUID. Constructs a new, unique UUID. + * + * @see UUIDGen#newTime() + * @see UUIDGen#getClockSeqAndNode() + */ + public UUID() { + this(UUIDGen.newTime(), UUIDGen.getClockSeqAndNode()); + } + + /** + * Constructor for UUID. Constructs a UUID from two long values. + * + * @param time the upper 64 bits + * @param clockSeqAndNode the lower 64 bits + */ + public UUID(long time, long clockSeqAndNode) { + this.time = time; + this.clockSeqAndNode = clockSeqAndNode; + } + + /** + * Copy constructor for UUID. Values of the given UUID are copied. + * + * @param u the UUID, may not be null + */ + public UUID(UUID u) { + this(u.time, u.clockSeqAndNode); + } + + /** + * Parses a textual representation of a UUID. + *

+ * No validation is performed. If the {@link CharSequence} is shorter than 36 characters, + * {@link ArrayIndexOutOfBoundsException}s will be thrown. + * + * @param s the {@link CharSequence}, may not be null + */ + public UUID(CharSequence s) { + this(Hex.parseLong(s.subSequence(0, 18)), Hex.parseLong(s.subSequence( + 19, 36))); + } + + /** + * Compares this UUID to another Object. Throws a {@link ClassCastException} if + * the other Object is not an instance of the UUID class. Returns a value + * smaller than zero if the other UUID is "larger" than this UUID and a value + * larger than zero if the other UUID is "smaller" than this UUID. + * + * @param t the other UUID, may not be null + * @return a value < 0, 0 or a value > 0 + * @see java.lang.Comparable#compareTo(java.lang.Object) + * @throws ClassCastException + */ + public int compareTo(UUID t) { + if (this == t) { + return 0; + } + if (time > t.time) { + return 1; + } + if (time < t.time) { + return -1; + } + if (clockSeqAndNode > t.clockSeqAndNode) { + return 1; + } + if (clockSeqAndNode < t.clockSeqAndNode) { + return -1; + } + return 0; + } + + /** + * Tweaked Serialization routine. + * + * @param out the ObjectOutputStream + * @throws IOException + */ + private void writeObject(ObjectOutputStream out) throws IOException { + out.writeLong(time); + out.writeLong(clockSeqAndNode); + } + + /** + * Tweaked Serialization routine. + * + * @param in the ObjectInputStream + * @throws IOException + */ + private void readObject(ObjectInputStream in) throws IOException { + time = in.readLong(); + clockSeqAndNode = in.readLong(); + } + + /** + * Returns this UUID as a String. + * + * @return a String, never null + * @see java.lang.Object#toString() + * @see #toAppendable(Appendable) + */ + @Override + public final String toString() { + return toAppendable(null).toString(); + } + + /** + * Appends a String representation of this to the given {@link StringBuffer} or + * creates a new one if none is given. + * + * @param in the StringBuffer to append to, may be null + * @return a StringBuffer, never null + * @see #toAppendable(Appendable) + */ + public StringBuffer toStringBuffer(StringBuffer in) { + StringBuffer out = in; + if (out == null) { + out = new StringBuffer(36); + } + else { + out.ensureCapacity(out.length() + 36); + } + return (StringBuffer) toAppendable(out); + } + + /** + * Appends a String representation of this object to the given {@link Appendable} object. + *

+ * For reasons I'll probably never understand, Sun has decided to have a number of I/O classes implement + * Appendable which forced them to destroy an otherwise nice and simple interface with {@link IOException}s. + *

+ * I decided to ignore any possible IOExceptions in this method. + * + * @param a the Appendable object, may be null + * @return an Appendable object, defaults to a {@link StringBuilder} if a is null + */ + public Appendable toAppendable(Appendable a) { + Appendable out = a; + if (out == null) { + out = new StringBuilder(36); + } + try { + Hex.append(out, (int) (time >> 32)).append('-'); + Hex.append(out, (short) (time >> 16)).append('-'); + Hex.append(out, (short) time).append('-'); + Hex.append(out, (short) (clockSeqAndNode >> 48)).append('-'); + Hex.append(out, clockSeqAndNode, 12); + } + catch (IOException ex) { + // What were they thinking? + } + return out; + } + + /** + * Returns a hash code of this UUID. The hash code is calculated by XOR'ing the + * upper 32 bits of the time and clockSeqAndNode fields and the lower 32 bits of + * the time and clockSeqAndNode fields. + * + * @return an int representing the hash code + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + return (int) ((time >> 32) ^ time ^ (clockSeqAndNode >> 32) ^ clockSeqAndNode); + } + + /** + * Clones this UUID. + * + * @return a new UUID with identical values, never null + */ + @Override + public Object clone() { + try { + return super.clone(); + } + catch (CloneNotSupportedException ex) { + // One of Sun's most epic fails. + return null; + } + } + + /** + * Returns the time field of the UUID (upper 64 bits). + * + * @return the time field + */ + public final long getTime() { + return time; + } + + /** + * Returns the clock and node field of the UUID (lower 64 bits). + * + * @return the clockSeqAndNode field + */ + public final long getClockSeqAndNode() { + return clockSeqAndNode; + } + + /** + * Compares two Objects for equality. + * + * @see java.lang.Object#equals(Object) + * @param obj the Object to compare this UUID with, may be null + * @return true if the other Object is equal to this UUID, + * false if not + */ + @Override + public boolean equals(Object obj) { + if (!(obj instanceof UUID)) { + return false; + } + return compareTo((UUID) obj) == 0; + } + + /** + * Returns the nil UUID (a UUID whose values are both set to zero). + *

+ * Starting with version 2.0, this method does return a new UUID instance every + * time it is called. Earlier versions returned one instance. This has now been + * changed because this UUID has public, non-final instance fields. Returning a + * new instance is therefore more safe. + * + * @return a nil UUID, never null + */ + public static UUID nilUUID() { + return new UUID(0, 0); + } + +} diff --git a/akka-actor/src/main/java/com/eaio/uuid/UUIDGen.java b/akka-actor/src/main/java/com/eaio/uuid/UUIDGen.java new file mode 100644 index 0000000000..7b63f65447 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/uuid/UUIDGen.java @@ -0,0 +1,364 @@ +/* + * UUIDGen.java + * + * Created on 09.08.2003. + * + * eaio: UUID - an implementation of the UUID specification + * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ +package com.eaio.uuid; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.net.InterfaceAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.util.Enumeration; + +import com.eaio.util.lang.Hex; + +/** + * This class contains methods to generate UUID fields. These methods have been + * refactored out of {@link com.eaio.uuid.UUID}. + *

+ * Starting with version 2, this implementation tries to obtain the MAC address + * of the network card. Under Microsoft Windows, the ifconfig + * command is used which may pop up a command window in Java Virtual Machines + * prior to 1.4 once this class is initialized. The command window is closed + * automatically. + *

+ * The MAC address code has been tested extensively in Microsoft Windows, + * Linux, Solaris 8, HP-UX 11, but should work in MacOS X and BSDs, too. + *

+ * If you use JDK 6 or later, the code in {@link InterfaceAddress} will be used. + * + * @see UUID + * @author Johann Burkard + * @version $Id: UUIDGen.java 2914 2010-04-23 11:35:00Z johann $ + * @see com.eaio.uuid.UUID + */ +public final class UUIDGen { + + /** + * No instances needed. + */ + private UUIDGen() { + super(); + } + + /** + * The last time value. Used to remove duplicate UUIDs. + */ + private static long lastTime = Long.MIN_VALUE; + + /** + * The cached MAC address. + */ + private static String macAddress = null; + + /** + * The current clock and node value. + */ + private static long clockSeqAndNode = 0x8000000000000000L; + + static { + + try { + Class.forName("java.net.InterfaceAddress"); + macAddress = Class.forName( + "com.eaio.uuid.UUIDGen$HardwareAddressLookup").newInstance().toString(); + } + catch (ExceptionInInitializerError err) { + // Ignored. + } + catch (ClassNotFoundException ex) { + // Ignored. + } + catch (LinkageError err) { + // Ignored. + } + catch (IllegalAccessException ex) { + // Ignored. + } + catch (InstantiationException ex) { + // Ignored. + } + catch (SecurityException ex) { + // Ignored. + } + + if (macAddress == null) { + + Process p = null; + BufferedReader in = null; + + try { + String osname = System.getProperty("os.name", ""); + + if (osname.startsWith("Windows")) { + p = Runtime.getRuntime().exec( + new String[] { "ipconfig", "/all" }, null); + } + // Solaris code must appear before the generic code + else if (osname.startsWith("Solaris") + || osname.startsWith("SunOS")) { + String hostName = getFirstLineOfCommand( + "uname", "-n" ); + if (hostName != null) { + p = Runtime.getRuntime().exec( + new String[] { "/usr/sbin/arp", hostName }, + null); + } + } + else if (new File("/usr/sbin/lanscan").exists()) { + p = Runtime.getRuntime().exec( + new String[] { "/usr/sbin/lanscan" }, null); + } + else if (new File("/sbin/ifconfig").exists()) { + p = Runtime.getRuntime().exec( + new String[] { "/sbin/ifconfig", "-a" }, null); + } + + if (p != null) { + in = new BufferedReader(new InputStreamReader( + p.getInputStream()), 128); + String l = null; + while ((l = in.readLine()) != null) { + macAddress = MACAddressParser.parse(l); + if (macAddress != null + && Hex.parseShort(macAddress) != 0xff) { + break; + } + } + } + + } + catch (SecurityException ex) { + // Ignore it. + } + catch (IOException ex) { + // Ignore it. + } + finally { + if (p != null) { + if (in != null) { + try { + in.close(); + } + catch (IOException ex) { + // Ignore it. + } + } + try { + p.getErrorStream().close(); + } + catch (IOException ex) { + // Ignore it. + } + try { + p.getOutputStream().close(); + } + catch (IOException ex) { + // Ignore it. + } + p.destroy(); + } + } + + } + + if (macAddress != null) { + clockSeqAndNode |= Hex.parseLong(macAddress); + } + else { + try { + byte[] local = InetAddress.getLocalHost().getAddress(); + clockSeqAndNode |= (local[0] << 24) & 0xFF000000L; + clockSeqAndNode |= (local[1] << 16) & 0xFF0000; + clockSeqAndNode |= (local[2] << 8) & 0xFF00; + clockSeqAndNode |= local[3] & 0xFF; + } + catch (UnknownHostException ex) { + clockSeqAndNode |= (long) (Math.random() * 0x7FFFFFFF); + } + } + + // Skip the clock sequence generation process and use random instead. + + clockSeqAndNode |= (long) (Math.random() * 0x3FFF) << 48; + + } + + /** + * Returns the current clockSeqAndNode value. + * + * @return the clockSeqAndNode value + * @see UUID#getClockSeqAndNode() + */ + public static long getClockSeqAndNode() { + return clockSeqAndNode; + } + + /** + * Generates a new time field. Each time field is unique and larger than the + * previously generated time field. + * + * @return a new time value + * @see UUID#getTime() + */ + public static long newTime() { + return createTime(System.currentTimeMillis()); + } + + /** + * Creates a new time field from the given timestamp. Note that even identical + * values of currentTimeMillis will produce different time fields. + * + * @param currentTimeMillis the timestamp + * @return a new time value + * @see UUID#getTime() + */ + public static synchronized long createTime(long currentTimeMillis) { + + long time; + + // UTC time + + long timeMillis = (currentTimeMillis * 10000) + 0x01B21DD213814000L; + + if (timeMillis > lastTime) { + lastTime = timeMillis; + } + else { + timeMillis = ++lastTime; + } + + // time low + + time = timeMillis << 32; + + // time mid + + time |= (timeMillis & 0xFFFF00000000L) >> 16; + + // time hi and version + + time |= 0x1000 | ((timeMillis >> 48) & 0x0FFF); // version 1 + + return time; + + } + + /** + * Returns the MAC address. Not guaranteed to return anything. + * + * @return the MAC address, may be null + */ + public static String getMACAddress() { + return macAddress; + } + + /** + * Returns the first line of the shell command. + * + * @param commands the commands to run + * @return the first line of the command + * @throws IOException + */ + static String getFirstLineOfCommand(String... commands) throws IOException { + + Process p = null; + BufferedReader reader = null; + + try { + p = Runtime.getRuntime().exec(commands); + reader = new BufferedReader(new InputStreamReader( + p.getInputStream()), 128); + + return reader.readLine(); + } + finally { + if (p != null) { + if (reader != null) { + try { + reader.close(); + } + catch (IOException ex) { + // Ignore it. + } + } + try { + p.getErrorStream().close(); + } + catch (IOException ex) { + // Ignore it. + } + try { + p.getOutputStream().close(); + } + catch (IOException ex) { + // Ignore it. + } + p.destroy(); + } + } + + } + + /** + * Scans MAC addresses for good ones. + */ + static class HardwareAddressLookup { + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + String out = null; + try { + Enumeration ifs = NetworkInterface.getNetworkInterfaces(); + if (ifs != null) { + while (ifs.hasMoreElements()) { + NetworkInterface iface = ifs.nextElement(); + byte[] hardware = iface.getHardwareAddress(); + if (hardware != null && hardware.length == 6 + && hardware[1] != (byte) 0xff) { + out = Hex.append(new StringBuilder(36), hardware).toString(); + break; + } + } + } + } + catch (SocketException ex) { + // Ignore it. + } + return out; + } + + } + +} diff --git a/akka-actor/src/main/java/com/eaio/uuid/UUIDHelper.java b/akka-actor/src/main/java/com/eaio/uuid/UUIDHelper.java new file mode 100644 index 0000000000..7abbe85895 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/uuid/UUIDHelper.java @@ -0,0 +1,86 @@ +package com.eaio.uuid; + + +/** +* com/eaio/uuid/UUIDHelper.java . +* Generated by the IDL-to-Java compiler (portable), version "3.1" +* from uuid.idl +* Sonntag, 7. März 2004 21.35 Uhr CET +*/ + + +/** + * The UUID struct. + */ +abstract public class UUIDHelper +{ + private static String _id = "IDL:com/eaio/uuid/UUID:1.0"; + + public static void insert (org.omg.CORBA.Any a, com.eaio.uuid.UUID that) + { + org.omg.CORBA.portable.OutputStream out = a.create_output_stream (); + a.type (type ()); + write (out, that); + a.read_value (out.create_input_stream (), type ()); + } + + public static com.eaio.uuid.UUID extract (org.omg.CORBA.Any a) + { + return read (a.create_input_stream ()); + } + + private static org.omg.CORBA.TypeCode __typeCode = null; + private static boolean __active = false; + synchronized public static org.omg.CORBA.TypeCode type () + { + if (__typeCode == null) + { + synchronized (org.omg.CORBA.TypeCode.class) + { + if (__typeCode == null) + { + if (__active) + { + return org.omg.CORBA.ORB.init().create_recursive_tc ( _id ); + } + __active = true; + org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [2]; + org.omg.CORBA.TypeCode _tcOf_members0 = null; + _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_longlong); + _members0[0] = new org.omg.CORBA.StructMember ( + "time", + _tcOf_members0, + null); + _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_longlong); + _members0[1] = new org.omg.CORBA.StructMember ( + "clockSeqAndNode", + _tcOf_members0, + null); + __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (com.eaio.uuid.UUIDHelper.id (), "UUID", _members0); + __active = false; + } + } + } + return __typeCode; + } + + public static String id () + { + return _id; + } + + public static com.eaio.uuid.UUID read (org.omg.CORBA.portable.InputStream istream) + { + com.eaio.uuid.UUID value = new com.eaio.uuid.UUID (); + value.time = istream.read_longlong (); + value.clockSeqAndNode = istream.read_longlong (); + return value; + } + + public static void write (org.omg.CORBA.portable.OutputStream ostream, com.eaio.uuid.UUID value) + { + ostream.write_longlong (value.time); + ostream.write_longlong (value.clockSeqAndNode); + } + +} diff --git a/akka-actor/src/main/java/com/eaio/uuid/UUIDHolder.java b/akka-actor/src/main/java/com/eaio/uuid/UUIDHolder.java new file mode 100644 index 0000000000..d5531f5e00 --- /dev/null +++ b/akka-actor/src/main/java/com/eaio/uuid/UUIDHolder.java @@ -0,0 +1,42 @@ +package com.eaio.uuid; + +/** +* com/eaio/uuid/UUIDHolder.java . +* Generated by the IDL-to-Java compiler (portable), version "3.1" +* from uuid.idl +* Sonntag, 7. März 2004 21.35 Uhr CET +*/ + + +/** + * The UUID struct. + */ +public final class UUIDHolder implements org.omg.CORBA.portable.Streamable +{ + public com.eaio.uuid.UUID value = null; + + public UUIDHolder () + { + } + + public UUIDHolder (com.eaio.uuid.UUID initialValue) + { + value = initialValue; + } + + public void _read (org.omg.CORBA.portable.InputStream i) + { + value = com.eaio.uuid.UUIDHelper.read (i); + } + + public void _write (org.omg.CORBA.portable.OutputStream o) + { + com.eaio.uuid.UUIDHelper.write (o, value); + } + + public org.omg.CORBA.TypeCode _type () + { + return com.eaio.uuid.UUIDHelper.type (); + } + +} diff --git a/akka-actor/src/main/java/resources/uuid.idl b/akka-actor/src/main/java/resources/uuid.idl new file mode 100644 index 0000000000..6fe1575add --- /dev/null +++ b/akka-actor/src/main/java/resources/uuid.idl @@ -0,0 +1,55 @@ +/* + * uuid.idl + * + * Created 19:49 16.12.2003 + * + * eaio: UUID - an implementation of the UUID specification + * Copyright (c) 2003-2009 Johann Burkard (jb@eaio.com) http://eaio.com. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +module com { + module eaio { + module uuid { + +/** + * The UUID struct. + */ + + struct UUID { + +/** + * The time field of the UUID. + */ + + long long time; + +/** + * The clock sequence and node field of the UUID. + */ + + long long clockSeqAndNode; + + }; + + }; + }; +}; \ No newline at end of file diff --git a/embedded-repo/com/eaio/uuid/3.2/uuid-3.2.jar b/embedded-repo/com/eaio/uuid/3.2/uuid-3.2.jar deleted file mode 100644 index b205a2488e6c050feec7e89352e93fc9ae59ab09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15009 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 - - 4.0.0 - com.eaio - uuid - 3.2 - jar - \ No newline at end of file diff --git a/embedded-repo/jsr166x/jsr166x/1.0/jsr166x-1.0.jar b/embedded-repo/jsr166x/jsr166x/1.0/jsr166x-1.0.jar deleted file mode 100644 index e4184c34b87b4e4e390c06602623a6be00c1e908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72794 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%0Dc< z{*+7ab1vBMkZY#_}?trIQ?;@g*@*c zpK^)KwQnz;a8G!w^m)0WaPiz3@rutTAF1h@A$_D~){OHOYhv%;=3aA~d(CUEHRVqt zjIU?SimjcV9ozW2Pv&~F-@Mvx9?rGrS4yOPQ+A!HD_7a^>EiDSC9&88YHHgeADAuL zvO+*%oii_gpyjP60(nI%?jE1UUU8}2xcuL*tq&Quaoy22xO-&As?LU4N@baE!qB`q;t(0KNY)WF5(7KZN) zTX9V)E9{JqQd%yb@&7I^xg!EUB^}luzPMeb`Da$?RzHy~Y#ys;yuB9_Z|PZn_iDGr z(=&yqtdH+(`PVG7w2M1n%jylY&o%96uwCl7swYt8i zaWOEslV6{pw{ez+<%UbUiqxrj-rSHAb;>)ZK`UvE=LzmDV%m;Vmbp%3$O@XU=<3-` zhn#jje3Q53hyNeex{uAa?kitd{(Zq--(`QWxMpYhX3vJ4z{`^-@7!EIukxL7`MWdk z^6UTp5jjx$=6e#u_Eerl3ds`XJ9eHvyQru9qulptJ1XbTPUUo!G;(I&aH&0XP2p!p zdAlR-cc$#n^xmPK7`x#3P183&rnK-jYPZf>c~#fjeD0-vg#jix%R|<$S;5Y9YEtH_ zu!XB`ZOh}nqxJ6QwJ&GRERK0Da_IPc*D1>zirX?RJ~RDv*{ARQA*Vcc2`t{GBZ&n&49=@o1b!DW8;Y6KxE8|z~+?5^*P3!Cuwm;~{f*xn6Xy zbv$G1e_}#zjqid4rJX7YlHcyOv!7e|yJo&qrs?HC-pQX#=VVL>2`yIN9(MDxsrq?= zjpr-hNhs+p-TPh^-QI~GHn#XSx*T%9XRNZCsd=CB!nH*+&-{p~+*Vv+cX07Zwv;z5M_RkyMyz^v z;hmZ3sijeOFMV-s)=odNJz}ya zyc+vVIPC?em$%&%+0$f^>UdDR=k`IpRM*DFElo1ZcFYuwsCf6-G4#Ritj3w|cC0M< zQ#Pw><7SIHMa#OK!c2X)zx~m>QnT^wyZ3WGt3SKlxXd!(VkqQ(<2{j zdTVsi&ZJl|vH#A}&3TQy^O@fj>-6}JaZgXeKRd*1BqbEdNY+2;tIugpjMIm~=kB5afz^E zlB{Aw?j=$dVY_4gtymL?{uXB0y!TE+Y(+oe!OR7)& zCUJd_$aka1PXw#Z2YuT;LL^)sxR zHchf~b9o@m;}`UP(E&p})(s!u-rw&pw>ZAxvwRUN&ji;Lfrlpq7EMfy>2`@VeC#5% z@QnXubFtH>DmES3!fpOxm-_17T{oS4w*(lsR5j1jQ~IF({-Z8u{y#_66Q9!e2K}6> zqv>#M^8Q1g!i{}@zC4rpGxJit<%NazZok|;{%gFHFaEmx#QiJhU!L4{X_l*8@e)O! zsYkRqcW7rm&foSySocq~?jN3qf3ICxakg^S?H7A{%VTyoh@a@2P(Ndz`{E-;4tuAc z2w#}a`xkwfaMzwK&&^pF7#>kpIE5wVl%^IVh7jO|Q)dpxY_ZDC3)d?3nsQb$YIU$= z8alW#t?&%ijJm6%t+Pb>+`DCB|2y{|(68I@JVdL?&;DDp{n7akEce~neN$yZPTgyG&WyP`qp5?axd%Z&Z3d zT4Ft6bzU};_~%^<*It*KV!C<76m64B)7P)^TDoM0mHqB!#<-;pE0%<0%?iD=HJ_#E zIgfnq#0y1je(lya87(ok>VIPjO`~;EpI=^nh@~{zSaf$*(2)q6{mX4aj7+1~r-a=p zJX9k7Mb>#^wwmkyH=MJQlbqOe{zfzXO#Ud!=(&BGoXm~(bDwRwmWJ_0U*tV?JzKIYtTZ^s;dg= zPkNrle4BISLmT(DMel;s=JrnfFtf$CG2)E#J#H0kroZ#%9SGa#k(RQ~;`YmV{Tt2W z+GDI03m4|xT(;=e+#u)Htg|6oQ|EGL+}NCV>5OtR!}JuF0{>%TcGEwyzB~Ox=(}o- zs`J5ZJ=+B*3%WbCwW++c7o2C_aWf^xdCDZk$Jxi;CQP5C?Cc)o#`gHm87`eYUo-`G z6kU77y6n7o6W7V?`zuYXy^m_ksCoyjz`abopE~-{j4*y*VB?l-(Cz4m|H!?b6@;N&of71(7^X<@u#QL82rxAYan%7vsVsH~a-U zmw&Kbrf$D3;I^wo%kjdgzl^@WocqhlkSTwjlw@k1o#&AwbILR9ek*mV3)mlyH*efk z`IIBpep~Ad8$qQ@f=Z9tD!TvK#Vj|py1DL;>!uz~qo0CHT$?CUc_I%|Nrmr8dTY+|onPFSY^b(U_*Ap2{NX+HJZCZ=4z>3_@%6{-HX3p zo|JRaZR66|laq1-Qr1XlALBc=X~9J04W1s?S5Mqhu~oY)yiP#l!7@ePj9Kh0H#jGl zBrHAZ>0?lIAa_B(g>LSweL_*U)SkFre)e#}6q^;zzvs`~U7ntvzID^a{pa@?m%rQj z{Lk~k^Oog*f9||K@1Kz1T2bfJE1vdG9=hB7x#8~oMOc3B!ueTWHchX4wm9gQ<@x{9 z+rukv07!QIMt zcXlSpnFKys9CkuPF0jki>G8qS&XW9ga(`xBsJ(LVgq5o$zv!$LPtry8!?PE){k;Bh z$-H(p4P`0Qi%%BYZER6LJ1gVkMXT&ft2&q3z1psJ+T`N1#b2*2i4{IwYoamD;IpVr z%rWP7wR;OXr_PE{U6EOABR0=hr6(e*BtIq1Vv^dd$Eb>gtp1 zOi_`mzP)WVYiBm=ROUz{(XORFb@P75$CUjJuisb7*L}I^R$IQO+O;p=s8=2c11b5p6Do^p@TqU_rb&LKLY2Kr1)$4B;cMJL@ zZj>ldm}!udXz=yz)|Ua97tb$Kx)@i(5*hnVeA+>#lEY~_z9o(GGwmE#%Sz`2C%iFO zDH4?S^me*&Npo*av5gdKl7w)G?mF(~p!>TD!~dJ~JpWkwGC@VmGgoBG*3AvM|8t3F1hS<&GYW@Cb_DLc4XkkWQ7S^w#8)iN_c>e9OQZ40;*-jTb zU#Iolh)%R%So6MQ2z{u7bCG9=Kleh;;fh@yYDo&Wb}fgrtvq>Lf6ED`_hvHCc(VumAn$z*jxC=0)i` z_dZM!ytjKU@0+YTi&NX5I^3A?aPd^1YQ}hP_1-Bny{C(BQYa`DU9?eJqNjarNa*p~ zMU$s4-+bC9+-K+2QxX3PY^HI!CV2)6ZxnZIcI{&ppL?gmY?mODpv2iTO&1$Z|5A#q zK9h3Ha@x(G*1Dm(&z5o~TkY%juQw`^zFbn4d$_Nl#%!9=ifw2ep}~4ThE9aU8h_hu%+uJo^f%`IrFvq*5h+WrThE5Gw#jU z7{BjTQ06shmwg2_Rccc>mOgU0JEd&Xna3|hBhn-1Ej=g~S+wWbL-X2oA9tGE_ga+p zVTxMn#{0V>u0LgY;gJ!aGRb(Z=+Rp)N_M$jAC^3Nwt0QA=#ajcX z6xMk1h#J4J-ge7j>gV={JdP``dU38g_bA&m$hCU%tQU?a%hoN8UZs`J&)gQ4J*7G? zr#JAT-G^A-*v}J|M62ZQNc5{03;)La4lW+TRa_LCi?5ohTx}cu%!RCAhU%zSV z<4Tix9+Ho*wedcme6G0cx6{K76Mf3oyk!3J(8<(1|M;^g-Aj9}8@>OMBI{qaSI&`@ z>x*sk?e%9|jh}tWU3^we!)T?8#+=Xt;yDPi3U&O_JxqMe6Te3iT^TiimKYHl2mP}`B zYl{-kPigCq$dSAHQiIv*)aBzZW-R#D!|(QJ@#cpsbpw^XE$6;VIQUyK?|-W+Z}gQ5 zM;jvaHFg+uUyR65vlI=tG{|1pt$ma&mZ!`7Ws)-6u8C!wQo9TSWM{6H+5Jju?l*(& zZ^ciXeap4}vh~aD`Z5X6)S2eyCFRW4pD^)n*{a|fk#8&RW~CX|cKN+BIe+-^7uG30 z*C(I-xa+}0xB2hNrkQT^3|Q;^*C944fM3QS{n|t3*bi~d2Tp6nWybV9YVSLdW#8*s ze*Ct~^u-rLn6{a$cl_7skyEqz>h~S@g~Tcab(7r=-;s9YzY{CqKCwhSR>+vI;H7!q zTwd3}<)&-;XXyUl(0w4c`(ozy?2jus)O!L>dCZUB7a-O&zx3L{MK^a{OsQJ*T1}vp z^Yx~EJ7%|9Z&MXZz8Zb=XWotvmn^1GQ=i7XMoDQ{tI<%31!xeZima&bXg4`+kq*rQTWX2KOH?;7`B!{c-1!p6{G{ z_BtF5X-dz3pfa^&{<3HDE?*IN^KPd4dFPP2F0b;d8R{p0`zZWS>2&x$IYj0~<)kjT z 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 apED455fQX`uzp?o zSFZjXpO-1@QqN0`J%7r4shM=_eBvBoK|SA;=?_*;3}N~4_Jpj=>CC+>Zu2g`-F#`& zhk4qI*DtyL!Z66oV#3i&JAH!Yn^;V}YszhOWd6!S?R&MV3>Pip-kquva^}IRuIv|q z7tiWnFLXZYYgaA)e&vUx?JV;T%--B{o2`2)efBJWd#SQ2i&c>KrC&l;)4twbQed=q)2ff<4s)koTT`j)j{K7G01ece;uh+E~&!boPTm$$aQoX5kqWlMqZ zrMa{1_TF$8tTmavWCoj5q{0q9%?}K`-(Q?-{995Q$TKDWf`9SU^9KtUm`&KU!kSFB zB?;u;uzYOtY45WGwH9)YW%pVye{5xl_WHdtI{TsuW@{RraR__)U%IeM9DYy5>O#YgW=epm&KUBD$W2v-}<4@7N zr<%8>+Q*Y5w5dGV?F7Hj^5vKfZ38ip`lZ0wU`{HWmgSYZBzNzKP384Y(Z?vzR1 z!S&c*wdX#sos+)3=?wm?TMeHiqnL!wJBWv~w%2JKc_FLv4m}{=eyyICq`lox1Wxg7t;NWsBx-O=#Gf)U!2l(pKSI z|CuGhp_hC^y{;=R;eO~Fy=ytk{O?DC_I_A>Ri|Bk%T=Chi=PR+_utn3qEyKCRm?T# zFEuXt`WIiTR{buR{M9k}cjAVI1uxGo)?KwrWy=(nhnM0u>^QzvCrDqTqQ$G=%TnHL zkN2BMNVm=IUC=Ar(%yUMIA7wF-iHRefGSHlHJVUg5OGv$ujKZ{4QYu(X7qy4CdT=bk^aGs9lT`+c7JMPAjuDKn%kQpN8^dvBfk zKeYMD-BDZ&noJA~lUW#WTzrLGAz;i$_6Em-&YiOjwiDYH?T{0=acflI&lL{QZ@GPi zolP=#t>qWE$8Pl~K<31|q*L($i~ouEu2O>>+-2=;xQO=y!}r&BiqFrT`S<7R-~0@> zD`Z+5dpbGZ&3tnA`a|Zosf#_7(-$NpTt493w&8owu9-%Mcik84 zJhgi6seQV!?>oM0v)rBRRrQ-k`ljTKm}bR@w{tn#cIZyEklT~Rwfx-d*i$NRr|qb-q0NVu!+Yl)PLS15os%_v_qqj1iNCI#iQl`#%+xaNhJ636nSPtY z?blq9p8EHZN^C%rt*6C>+S2eP3&0#hR zbN-OwyG`^v8=o&nYH`Sd#wf+Zmo39Dy*TCZ|G?zCmn!UeFDRdh%73usi1EtvnzfqY zf#uN#8#4|bn$#+EN^D)?)kD+1ZQGdqK+rkw-R?!-O=PWa8UEb=X6D?*uOlv<|JHe1 z=#|SVGiQa>_tR(mmgMq38nFMA_qx(tE!$IH99G!C_~MB4 zM?VjVZ>V`FE%qs1@Q2SzhDTrImAOCj`h3<+dS%O+9_TtuDS| z)YrJgobh7oT zX!UIq%h{#(?d@Kja(RmR1ouflE~n&A+Q)J8w&Nc*)Mm&FJ0BTF76t}SP6h@og54d+ zF)EOT$kZv>!P2QB$N&3J+T>Z5DX4Ml(ya)=VnxsBsaef|Pn0GyWGU$$%`!iIOOJQ= znRm;A|ESe5-T!guT!h4%9{t*f?jMyc9zUIP_SwFr7Bg+G7uTKtKj*p4@8kCS|FJz_ z%QEaqQtUI-@rvkE?wM*aE#T2Jq z7RvM9p=|KP&ScKYY^Ly2yZdTu%f5Nm9W>h7miu~HbY;q$>Ac5dgTHg9Sf$Tsix$~2 ztEMwID_CJu!rK>2&rh|jTyOp@YgcS&c4?HPZuG3E`ysi_&;KR0q+SqQ{map{oOQ~i z%vax>VoPP_UR&;OSFq}(o0NLhL-yZmnTyngpRHQm`YLVVjO@va+E(9Qm3@=NciE}k zuaZsg7xY%`d$NAA@0uhVgV61Xml-EFx}DLTv^2%SyZZOLMhAJ>Q7k1)x-MEW!vh|S3<>CqnmFZRe8T`mfG}PD(9}tTn{syuD55YVcbTkZOinf zV~oX_y;YAhus*g}pTJbfd7EkF^l9lUV||OR_i(P)s^GrNb%^-wi|%P$J;jRk{)XGzclfUiS+MD{Y0UFBrkPe}n-{*~IKvj|cEL4>lkeW%15btf z7d1pb^=%JIHRGOkZE5?e&FkzJURGLmy?6V(fcH<^uFjQJd68}AcHha+=+MgLfj$4G z*mCS~Tb$bRg8j(lndt&Am0RXr(&^#8!Z(rkiS-VT7q^H6B&E6_$ z>n7O0*E}zH&+9)^Vatj0wO4k>hNL#E`fkRrvkosptKO>@_qj=2$7evhqadvWfjq0@;kW+;2R7>%$xF zhZpO9l>e9Z>p#}M{>w9^Yb)CM?2^@ zW7V2~iL49^e*DDrXOOOj3%gw`oGS9a*3)a!TeFraP6yp~ig=nevV?5d66VEtaN43J zTbR1?%;n#1d#R>2+bQ0)_QO$0`I^syGYaPj2Iwgp+r8?UURd+>)2pZT2{Pwz=4{X8 zoK%*g_Br-k`MK}E=bkP%yZ`s|)$0u3lA;`W)DLq!7L|*8`cQ=5l6A4g+0}-uk1KRL zjJa~peJbc{zg}6P-0_)9slvF$H|Il`Ko!Sarhk%_`U2APu08+a7RD#o@TN&-4}XW zCxz#{&EnffBQKxevAC>R={V`i1b5%a6T6p{Tz-1>);H6~5yn<;`d_tNDt__yxKCDP z*~~+;>@FL!}4OF^B5qv-}MqqvU-E9Z8my-c5VF{Y^e#0Bl-t?e5(uk=tmf2r9h z&D$hMl!N7Eli+h#UQ^f2n&BLe?{vjPPP|=GePYd=3#W}^_WonxzE!j>@63dCv#qYK zk-4P(X~vb$YnHrPI%&%%ZZqGsmUp7!VRJ+`1uaWiSP~(&MEC#o9YKeV9!c)iRovq1 zHQVddncbyZ?Iz}2S$I@tYhl*uPL)V5m!3^a=1tiAB`9@OMzPzSr-G;T&KHYJ?oZfs zWWn^`cJX`aQ_D(ot*@ku+|hG(b(;6}E3a(Dg{d3aHvMyx)83i1^^EKU?wn$0z1=r` zj+XJPjOgbRookchG`(wWg;ocrDBCBkc~5#n3K^N1Zp+P8*k`mfiT~TG3OQRXzDbv<~v{Y+im(HuHp87ag@N*Sq!xW8P5;9 zc_~e0U&~+ATJg!kbEVy$zhbxY*WS)|);@dtqVH?jEx$URF`Rw9)mk9xl~_&GFR?$j z);~lT;Cx7D4Bizv*nK- zYM$6p7^tyYM%*nd_9T;$ZP4}PY(e!K63-{MKPsuTh}Ao{DD2MVuIi}5ORIkV;^{sA z$nyI2%PNU;JHDwN{iW5^n9cEHru%}vNLcQ5K}G5l^B`X-ovQ^9_A!*@ngX((BtbD>MotA z;jrXbensE)RX?j;j`F_{vQKLN!72H%IQH6Rxzjqo?ygCf-S;)}d{s@P_Pfl&YuSvS z%Uchv6V`8vKGpF0$eiDAtSqb#Yrf^0GG+1-u|nI@yU9|ICFb@oeC_{jKm8UNlm^B&=IHcjd>zwEk>T9^sX zD^AZb+GxAHoYs;X`#L(MCw?jl?C*_w&p22>?bh`sQrR-MD zr-RcUOqWQ=m%aM2*Qm1NoSpaYH+#=T-99B>|NobCgZaloA>|041c~sUg}z6>swhQ- zeEi3d6!Gl3w#?lJFPKGFd-5b0dhR?ebGIkC_qvd>xkXg?#)XfZIZrhf#yjoWvi|Rc_oZu;VD>!p3KV`k0V86J}rVS2xi=d`x`jIxs@drR-mdu8Ff<+xS!-R<+Y z@2;8SRII|Wa>D_uRM#`&J#VG%NoiY6I{Wpq$*i-iUdJ@oD;-Jcc-pgDSL3q#g?&#S zMZVL%W3cbTSF4wXx84_oHeFd@|4#grh1R8-^J~O^R-OMUsZ(9`wqb&Un3Q4G=HIG>yzbx6v~8_fpLRoL#SY!X9sHcU z&nI3DI3g|eNoH?zxoS`O{r|i2ua)z-J4?=9^4o?zT54TF80%TjhZ2j`9=dF|Y2*({ z+t94Q+n9H|ZL70=*Z-Ld_$FvY8VyI-sG|6X@~Tw8Lv)QT|Z@Y^VF;bI*!`T5F;TwyH3}Y^=x82w5(83=QrnCqqQH8cigFLc`6qg48@K4O8;y>)nrec^k53-#6=yo6BfDg2?ojqeD#?9T`%OO^84CP|4y5|U%hsB zNTKGA(*j;!?tgxJp?YDA>7J`k4-}hz6h9VvX2~VZr&_xm_dolP6o1jsZh~NV;8bT7 z%N(}uq85#onrfGzjz7M$YiG*+Hp*3L6O@dYnCJEXgQw_w$7wS-YBimdu1+}dB$;Qz z{HT4M2i4jxtyJ?1_#<@GcggPO&v%|;<{&r^#>7apao{qR~#KYP!b&HCq0x3&0kMhnStx!jj5yDQ)^)&Gls)xAq^ zAOE?1t26L>7gNzun{B1%%Q*z>tW^BZROj#NmS(#7sq?kSw(aLXRr~IKXWf@rJ(d4i z=FO75*MDg`doRnavS#|dGke3|D}U!bUFDFn{-%Oz=cY{Q{6GDshb=EHdOtI4o+}%> z$aLA7ONq)yT-ZOJFD)14Fv-){D;>1w&`r%nCL!$Fo#C_g1)G2K&AWcaVO8n5g-V@; zqM9~gA6fiES4f0@?3u2luWA!M@n{o^)Q&^-@yiZe`Y=O#uIJb5nh#ldZ#6`*imj8b z+jlqcUr^cIU5VyCzh@kIlK0E=gpGLU-A^lPjeLub_q}v9Ydp!g(xM=5h1R4i!MtWK zwhOj5Gzr{gF`fU$@Yl{e&lDSWroT7jBP1v@ptaHP* zvc?nF8SEup1iU467K zw${t_7nmOl4>|Cc;~!dgC{D01riF=tVKplQgDH`TA7e~!YRKI@p+JFud^#6mx9c7a z+WOxO~mH+?q_p9^)v3aW{8W%dc1}W$I#$A89QE|PdsP_$?MD3P#MVlm! zJgPG1t3H9Ad$mFSPZ7x}Ie%Mb^gP!&*e{*$ zeMfJ`(pm2N;>@yLFK>IYH#I~hw5_vdv5RZpkE07u=U!fWo9EX;fjj4}`5b@9;`#l# z`0G;+cUiOUl*F{HJa?^6HK+a;CGz{>*vhb4+-z*%23x ze$J9NzG`L*1UnZk*s7Rd{wHPi$CmBYu0|;phAGKHccW4cZ_Qdc`=5%#va6rIw#7bU zpEl=O$@v&*qp0H+hpf~#tbNQm@6`_0*yA=~C2t|z%arfR z^7Q27C0Aak*1vA8Wk0EQ`I)1gs#-j&KPK*PTkz7=(51S?qv8LQc!M)vpEmgZ(p<41 z_dxpw8QqtQzbJo9)RCDs`FqKQAId8ElfTK;X{apkc_KPv;vdfW8@JW*?%!C)`jox$ z&x|F;N`bf7Gj6%JZ1wNRnlGsOTj{6fta;T9%YB1G=Py6`tL{w6g0$N!HkxJi?D3se ze572CTQ@Isl8~^Wp5O_|60PeTYWjk|?mbgYURdks@VhJU?d;>3t0b>J5?OGkJ7VD( zW7&N-x9MM-cj>R$=(UE}Q-6%d`haZ&41hmEIrmvkzcWp-6DK0Mcb_*+N!Yo~9^ zSL#1d{xNyQ`30S8JH_o9_*3U>4w$s8Wt(~WvpGMX&CX9t|NrmzU-kpeA&Wa6>}#sD z2{>_k!u2^epFXW}-5}{`*d*lqW9o*IgA;PT{Z!PSedpEG_>$jF<=H$Jr(N8<6pB}g`vF~OO_FK--M%pqqSvd$*C?dwg;#c`9LKMj87 z8m)d@YO?mPBNtms6C!Nedheu`8*15i=ub17`CwBg_(d&~XH(QiiG}haoJkYUEpgG5 zU!WmBF~Cl7Y0WXAz3Cc$H$5JzJ*eKkBJ05Sl)nno&Myd4TXBO$bny$1r@5DQcUdRr z>Yw!TiTT}G5WLv9q-p1&@0}}HJy+K_M*QrW@#(Di6uG56tgW4OXXTrxESw~JH0;l8 zotZO5;*ZNme1Ki~eI;oYJw@Zq?G&Ea|0go-exFgHA_Vi>_X` zJa@*19Gyek0-KW$A6?aZyMQOhaL50TwJ-UemHV?y`+sNVzs>uW{GOrJ(Q4C!c3Fk-Kzb6e4^-Oj$JL($AJP?l&yI zALjh9{Y2#ZgsAtyAEv%+6aFBhxuYYL>8I~zi=~m?S7VfVI=A;}ue|FpGiT-=o4f}) zrP3+-=^xP+i8)HnlK8^R!0?!Zm{}8Wf-2Ta&PgmT?hUz}Cmkvhd%Vo}+nF7vo>Cc? zCtYZJ;GMI4Deo4u#w)oUD18rxKI*yUd3R=pjT^5%2PY>d=Mh(?U#xpRIH-Dv zXnj1vJpYioLgCG7n{AIP3?@D;{$^P{ckA_iH}?PkdwM;C-lM%7^A0riB*siGh;w^GdZ7&U2JHoZ4h`X z>xTHVXL2dr(;~BPZOgNIT79hSWQN7*TV;I%sj~R^VHdxrL$(AFPU+uZSn0{$v0i3{HJW&@_lR0Wy4oD7nS?Z@VL1n zIm_?zGKResX08UfEry87?C zpBB}^x+i`z3yGUa^{u@+r*37@&8%CdwHF_BTE4Z`kbD+s*c2$LK5^QIZ4R$E4oAN6 z3EuMjj83xFvJY#zGHsS8@p6h9djy|jS1Asj>3>vZ-a@8TJI?A~`^YC6a&-3}jbRRn?xwEc*T?SYCO@v_G6l{0rszH`bLjguYDytYm9n7H3t?&XBb5!Fw;_ZA(#+jjEI@)|bJpMN?gWxlh$=KjUZqxzSj zQg-zO?~}0_r;UFHu*xN=xQ2x!$RB6k@%68L{gQ8mP7S-Iik$f`^F8HmnW}HNtfn>d zX?FM_m5FXAXB}lVzqv(S&FAl)j^}$*cCYZ3z2d@NIy0cS#H#N=e1}(s(`;-2?_xSG|UO(yG?O!`>X8LV5 z+R-JG$#GewP>s=ivfjTScKeG5pIiSp-SYkPO4E<}7jI89?Vo=4ujrh@P_`G}V-8p( zwP-wGOZv}*I-=&Y$>@=;F#|(h3$82Zk>>d!g~rty&YF;`U;lsKSDI$T={$*(r*T7m zWQ3>z=ZSsl3XTGII8HJ&=A8jsOdY`)W8W%83&h!t=@KP)z+@HYp<@` z63YFg{9JARI~_@n4Y&S3|9^4M(|y(FEx+H{eBXLcQOfat#-0oFJ|^}3n5F;!;c3Nv zGS5y6?%VRqB%^7b$=Pcq(Z)3&GMDkkoqgmsTVHPev#T}Rraf|Y_+0G0YVFdW6Bd?k z+Un4CEz;ZHG2rxvi_=T=xwiPo$2QfRd~{u}=H;pB0_88CsfygJd3o+c)rVm5e-jQ* zpI7tpsC?DurTqK9J@vM~`*`P_FG8t*b8{J(HeM=;I_N&91v+iG8_A}tv-P2oM*33M3H+@;g z<}EihqdLP*O}E@;X3n}id-;b{x$jz!PuI*ZTeYo0pS$)}<}IatI%zJ;KR@M}940Bg zb=$UAH5<1Y*RHs9ZqwGywGl_ZtJ+=pu=h^8)js{N4`ud+e|X^)&AoiVM2&@~jiRI9 z9gbR7*2@2Si`Ki1m#&5VEMV+k@$I3~zUw~S=4x7x)V`)(z_?m_il{_u}~W#rct zvYCHaI#J(u+qE;VAAL_?@4lQB9i5z=o%=Q>I$HfgX;5sgYq7KQj%_P*LPP()S#@mL zre{l4pMGWfC%JX&!#2;WPkVbGx;1_|`S4g*L2hd3+fSNXeR-cxYn{zvbJ0E9v9i>- zoX5rb9M|sqO8mBq?#q}I{pnd&;9MCT+q`zJ`UO=+|0jzb+%73T=U$>_607ha)R*aI zr$^^3jVlQ4a=lN@w$cdS5(ZNZ-Zro~h@sDAT-tBRqz=P9w)#{b{`5N(2vUXc1 z8thsxAYJ`B7SoM%$~k^8LZ|r&!|7F=-a7JSD!ks zKAklemT%ry@|%p7HD^rb@m=qe6z*0sqeUW5RL)$`usJy5pa0tRI@7DFf_g55 zY9u&&e#%;<)#f*0d*#E_#H_U({%g6y-P?qgoZk2H#-rrR@mCVBrtH12Y|f&|^+I1v zs_pDEznJ*iHEvn9YTK$#9gnM4mtt!#JYY>>Q1iTeDYGmzcgL2UX_-3`?PhD5iI<9| zWS=_u=)&&X876C2DD8Z6lkeo3>xGNYukCk`xUuo7l0cbj<>Qjfxqi9+cNf{bC^&ww zyOUYe^vQ>kOJwtYxhZAo=2JI zCe61Fz3QjGKF(~pU5s_Vo6w8NRxDPWMoBXxW%cq^UMJ`!UtP#?^yrZjFN(cFb9ol| zonDot{oJfY`>^Q4V{T=JN1G=VZ?Tv^!8e^l(hn^%(EfS5+lh4!OqVSMKm+O9;MdQrxd6 zn;ZDeN^P|&*Q{fAo-OO+`txW>#t|#cFRKryOz#OjcPGWeVN-l~bnUyIRN-l6LjEh& zqYXQ+2X?Wt1nygA@$q5~JIBmll0ktQ4LL>0rySo(+U(q6e8as%izzVFvzetZdX0+Z z%GK*i5~a63G}S)Q6>$2}C%12cS0*P0uUD;p`dR1NxigNQ zi8Gqngp;nXIycSkjJ)IfJz1hl0uHiFH%*`U*|2ruhs8%8&PZFNvNLz)MaQ<6ynB?C zZ$y=3c;q;^UAwH9@W@9xOeIC8RBDRN_w>bAjenY(|9vj^a-*%q^9gF(+l*)aD033IA2i3^;ZqD> zxqQi$ex424Z=P@3)wZl4l_lKZrFi3HLBHHBW2pJuUWBfHScLA2a|gbmR;Jl zY}2z}RhC|@f1fZdzi?!_S$Jr;U+#+4g$+U?+n0#+%un9m;Wlx%YW17M?XmY2*gvc_ ztUJ)s*7m75($4b9Dy7X+BtIJlz0sOvnHa57xM$uRo-FH|`Ays@28$;>&_9>WZr#o~ z{l+bm=-pSYJ)0D@K66DDmo<~L==N1s;cd@N%&(f8Pc=1dIh`$YGAl%N<&(KNZ;jS@ zP2}%mIP1w`wb)E9?VI7g+qa%>D`UMF85n*$#ILdW3*)b%z6oEe_zZ&YG@SpqGpzab z<6vcGF$>1U7d0l=Zf;6SmP!pb^;@|z-zxlAOZUA03ogIc2M0Zs_8*b3JeR zJlgK@uh2~U!~+Z8wdr{niLDmue(9&ArPVh|2JLbRtnq2T^z7BEou#2$Ropkmy2vgSy~+$hs8 zc({Fsm|+9w?Uwv4LLUt_313(2`}XO5is&QF8DHbqIogz#l8?y*rxO)A~nwKnKYmVOrc`p&1_>({K?*;szR;`7qzORchp zoc~s^o&WWbDegp!_ zx{Xe|+w`yh+Q@AEw?a7o=B?7Yw^cQs8_#cK4wq{G{`ZGr8F!DJ*}BDY9tn5M113#h zb1pYq{P)N3KWEq9U2*rx^?mM+EoGZ;Jh+~Bao_vn^E*;+t-Vt=+vDS7gT5bIZ@={X z@{qqg!~VnL{vT)bcXj6M|M2Ph*CxB13-7*kHzrMp=Mmdkcdi z{%)~n*H4}_xxHPiNekm|FS+|(e0hNMzh3>nx0sXq;^*j2`*AdA*8|%_>ufc`0; zE7iRb&vw}xZ_;V`M5o`g)nR|%lRqLKU3Q;MFkGR#e%_@E3X3~bD!0XFCtkBzV(X)% z`)<=#_dmB5KVm-B{`Xe$p0@4AnUbDNs{6lLob|14Qmh`$vYnb#r zo)&MTI#29H-I_O(XQ&%#GWYW7tkuq57h$;6D#n>3IjlUS`q%6~f5eK5SI6s!EuUY4e}(IwC*r?TUHttBAdWB7+aKHD8#lrc=1Ju6c9cNy3@9iPq zj?cF~PUkyuCgo^@h4(Th@y0LPG$WU2f6O~JM}n0{cB_T>#rrGzCb!NzRej#@aPqai zZ|)phR=_*m`c(GoXW>^Z((}`b*4)|XEciBGzrb?iLTBk+_m8=ypHX}MLc_WL^@Yhg zA*Yhng|oDm8lJV*GMQR=l)fN zNtMYnoU7a>hB-c4pee&C{qw`sk9keY^!Pt-yt~T7^NNzT@xodCIa9*JE^Rf`Ilacy z?AN5cJx5(s&N;r-N`3l9RFHEM$MWE*#S@J0Jy;-l(wwn>-&4i&1$x@~>++%`c2A!a zBHdX&_wKpRN!vVrZQ1Nr^x(=jtJ0FMHCrE=p89j;sO-~3<+zeHY_p6iPwuGs@q@2p zk@>R+VlRH!)`uOP=qY^F8o)@uphwOP2G4-&YrCrqBIS zqq%(fs=w-A{ARAIs_(p~nHlt6j$|Kj&^P1S$Phs#5P_wM(7zhA*d@K>GZ z`}aro?Du}ZzpL`U={bjn&2m{k8=~@B+vhbrirFYC6<@MXqQ>xN(o;L;->=qwc=E2L z{G#6vvCicRN6MCPB<8f&YX{9=^3kf!`MMno@03F`7m3&zvd=vdlhPF|AoTe{^pu4j zbGrCf&cA=K^Zp~{UG*~8iySU_&Qyw>c_>QaLGs3Z%O^~mJ$*m#T)E&MI&!L~RL{iu z>5Hq`|BYM6Z(r->KkJC_+fs+Gx0Y7DT@=R`|KFj03TtrwvWG^C92fsSu;;JG&CUah z-oDslUCw>!yJD@nk=WCZpUYCV9XNNp`9a#NEDxs360%QY+P1ZRdb@Vg1s(P&N+k;E zPh6a)@G{4KvRiJ?Us7K%saO9)I%nvDo2no6OO~qKSN-T-V*cV@v!|x+4fcA+xPO~Z zT>2<6*`+_$#AX?X_w#eN@@CwUtJwN{;<~*Gou^A1G#*twct6Ra?iaglroqLj729TC zsFk_?zu{GVz*qYfzuqtWcdq1!;*#4x(r3T?)4guW!riO)9iHn~r*r&sW>^r*u6vzl zn0^L1=$9Wfi%NKL@up?Yf6a}5O_P3~PfDA%K5g3jO>^h(n`HcW`TCcdWobXN((e3U z05Ll)?bqMB+8P(*|IXK)?`PPR%ct7Czff~;>CZo}{$H#yStn}wSy27-RMuycb}XIt zB;PS3aN$P&O2uZKCsiec7l~w>Dci{#JL(j!)Y2 zO>|kt|ARhn1-!N#o@A~rkei%YvpT{1;c*K^mcyoou^CK7>xxC6KYQfwR4!^@btyoZ z*Yr|=GXIK+YP~6Sq6e0JHOonqRlB)7+D-eQVQ%8&PnTAIw(q!p?7E<_vdt&=Ho;|^ zZf{(<*UCKKy2>cLdaBqP_3T|c8|1iqner+b!no6doZmYcr@V8|YJ5^UUu=$q5x3ld zfLB+l?aN=yci;QVYhVASrfac08X36_ksEd{P)V7xZHwK7OI7VjKaw{2TxdUVsa?rc zzR&L$N69t!Mcs8wRj_o z^!$dRS|zP7o)OFZ-KN^P>YXZ?6)k>7&~BoW1iN7NUzIs(rzR){opg=-65r~vc)e6m z!L%1H{yA$_Uv&yq*O|hs>u_PtL`GAi1#WTy%F5hR`Sm$Bofn(?vi`FGQ;BtpPxO*< zrOPU7!WIP=PwTC6zpm+=V)c5-Uf**2t@}^CzOvqB$|fNZDV=9a*uL4F;k&8wv775` z?FGP9e(tHv+`SF)(PkAH$1Y_Fd50(BzTpI;_^QKx6{@o%Na#{rf(x=D(iQa$=IQp32#jz>fk? z(>;5)drX)=N$UKmFRO&+hr5brD(ZF}ikM&`^||SVmTrnvndj*QkB3&x53GLh3)Qh- zcWl*OP$0=QePO}I1C|m#tq&I*If@Q$@|Z5vR?uJj;?B3=BkyFASmyR8NNnxa*s(sLmiPVii48$5FV@dKQFixQ za7p_1i@mC~4xal=+;S2u4k=h)y7bFk)xz=&(_bl}IoS^{uWyduKkvAZra&q-2d*& zb>}BLq@sOKzgYZjZ%{IK?;U}o>uhf}Y!Zr4ytMwRV)y*F6I7*_&ire){cD=W3yuA z{t?+9vN*!Q@uwDb4+`X~pz2ehax!qs(-dMX|<9ea& z$36V3mg;Ul89HC>`o-p_5*ngcx~(tzf0+_*9xQdidsT^g&a`iLRhCvpoN73ly(p}1 z{foD42Gy0uUh96uT@3#+xvp^e6mECN=Yl5e^$q(hcKkSbP#{2piR&<9>%#<=<`@1F zGCP*7o;G=65l7BX{>epN?24uR>ta1(UtDue3GgWAxVgzNc8id~7M;@KKBk8n{BVIy2q8wsTy|oz0>n|$8NbMYg+7z>6mt{KFwX(-hJi0 zre*tmx&Lwpt%#rGw6|IA*X|dq|68eje))b=ptAH$@3b1Tq7xkNN{!{!x4w{{9u=@d zL}W{X)cco~s}>o1YkWGy{^p98X447z)DnKF*#Qb%zRk>??`BWfD$Lsb$w}>Lqchjp z)4Gd(ZI1a=a(8=j2KPIDsbiBi-tAT09k7A@Fqdy&hUDTm3w)J#x1U+?wr5*~$GT(Zz#i!Hump2NaRjWM=F*W>CGD! z_O+8|(Y&4}BhOi%GuQgeX_~j`?6IjATpO<}F+xL&dt929n_b%a> zSrIj@UHeblq5a-gXZfd;)hTR^*s-H*XXgn^ zk4)8XH-b)EO@1w8?q8?VA>y^*bvRul$@N`?W-evdq=qhwtJSr(e zoqL?Kvgo(nT5oE?xN3y{igqboZ}piJy!_}Z!&4{DF8Y}&_n7BHpQDE_CC&))vHV#8DcCJ9-ZoS1xV>bCn?XV7iN-V`6S0#QKgg=> zRm`q$In2km;YcD+VT*yPwl24%PUy5LTGLDfpG#^~J`?6&m*A_oXz!JO(|UZpin%R} zCZ2TBS3mqX;cjoR&rO}=$-h%S9AulEEIj!!zvS!~|6}KC7{Uwu)y*Qq55)dn_2;lB zi>=JU87&=)rcArW`}6mNY3G|t53#W)o)8mR?s3q%(|K~P#l%llPRjE&Jw6&QWft4E zpj)L<@%DRNiLLTxt$K@{%~-V;Pq`B7b*Fu!$h1JuAaS>48|SFxv2Nx|mssrh&NGfU(*x6esGX?M!|?(<8v5>X1_`2qX(d_6bWoa@i$rRs0byr0tg?Ahcg zeGw9+3pP#iICgr8K;p8G8aF$Shpd?2s^sMr;ru&c#SERh?Ckk``o2><{)(=$d-~=6 z(qHd`{_?N*xBJe5_%I>=iD5B5g28ts^&9oxIxfFs)1~Kk>-w@OYTn0=1shJi;g^+Z zy>;c0vM$c)8gsp6&$p$|n(=O#yY<}#c@va>AD(%1Z_*}}QxiX#KYw0$v#oUVS6kP% zHB+Q_KQOHG`L#iMZm(@h>wI_fWc^*z`V&O!0*{u-by;0rV(sS|ZeFT1$MEXsjP(t# zL<9CJ341J!YoGY8W7=`i8Ilj`XQxd&Y*%P26I{_~y)gO8f+%~RpysUF)*Rm>d0XCT zJqRHTmW^#4K=m!elu6(!>nTQ;lK) z7nr!DUhiRkyr4-ivh&|2mZ@?l4Hk)N)bBd@v~Z%`_UbV-zZqw4QTc=%{uW{{JkzLN8&MV)zfArWdZvQA= z^uPXS!sGlW|Ni$~JZ5ij?1#GK<9bcUFNqx`*JOD6CY_sAniA8bV6~U$>gj;JN|(!*+GfWZoZ?w{<4v1qTDgyTb;81#&7056i%9%-NNcmX)ET>o|D1=B6MBzoR+2Qnq`_yH+?zw z^*V2mTSSDqYt)0rRFc(PI=_6+BXL_e4MVxf~)Qg{rPCoHiPZGC3aW160@ z%u-nOna&yG^yGb!PM<=%jy{VCnYBD&rzO8>n&hmrKX=@+nVOQVc=BrIjTAkn?nsf=G?YtrkvUNwK^IqW=>pZ{&ciX zGdCq6nEHYia?CYw9 zUstLAUGLm?(;@q6N6cnU)@M?i7_$RY)*Y_+Y_o~^`Rat6CA$@mMU^gEy;$v-rnQ~v zu|Buo(yR6_{3X4rz9oOB;q3U>NZ!knRwUjzC$4>C<;k^wTUfI5HmmUDrx>&12n=;t-3-fIl`%znbeTp{J2r&X1>pUL}UC!g8Q$hg-n z`OIy~EPIu^d-_X0*M$gHUVYYVaXsgt@3X^8ruR=+TQAZ-vp;e3Pm66c{1bNnRGum~ zx1&2|wmtLenA!DuT_IIpI=uSLR({E7zjQ)&RoiaoIcnPOV%v@^abL5Pk4@dS%4Mnh z?2xK0&Z>{B?^La2R-UBc>!P3-=ym;eRM{@h`O{SGw@f;=n=?2@Z6C)U|Ic&Yc|Ft) zI@CDl&YpL-4Ge|8=N(p=HnVn14x8rF_X6Q_Ov?|Ll`9>s=?hC0H##G~c=gWNCdK`? zy0%Sxd21a{#gUZ4wk`aYUFjgCcV5ZrMGw!4iRr5*vR^sTT)11IZYTGoSLfdA%({Ow zsndGDmAR$Y`P=@TGOUkuKRkOj@q=$q+nv5+Z~IU7UlN`B((q^Cm)neAb)7nSbyK-E z-&I^B^GDxLwzuQtBo1RvLHpm^IwN$nVx()W6(9XwP!P9J)zoP6oVCT%j)Xh-9y^-6 zvaz+nv`(J&a!lB3?Z59umOC7J-zv9mhEHi$-NFSY^R5dQ?w&W{dg1Q#Dl-s?sy^HY=triqm&elq-oTSq9aDmOvtyfA9?@_aT=#^0AFn2>r)@sZ1$a%LpYrXTJjZtLI@=1@Gbg%c z$OIf+-{I4IX1z!2{G8-BUqp zc)n~m>Rf2ztKBVe>*@dOHm-lX^JmZ2FIYU?q-$^bhlM9gHf0+xKCYD7dFB=C;a9xt zud=TUyFa5tZLP1%&B8Cm23vgUYf_$HAR^GG*pi&l^V26-#z)zHpY^$# zWtw##w%fi^IpEbf$0O80h2D9%$;@=U0bjsQzdJbMnUPcf0EmEE=QkHtMdAuz}Ncz-=w(~sTa%6 z-1dDlbEdnz*C(^f4Ckza49&N(WX$C{8^tky>x>ztQWJM_L|&78kv6w;-nGb8pC+m8 zt>3J&X8WxdZ#8GV(46+--YW*(dg}+f4)J8j^jTZ3Lid^fpi3U^m{*C;;Q2nfWsr0#f%}o>P zwXbKtm^^>^^+Pk6?SFR zBL30S6PK4-#%)`7;Pths6_bI{uT)*aZ>-}AUDUs%#|E_&M z!tq)xFe6s^SoHQz&ued!c9phI+3;IHA@j_n>a%KU3wG}o{>!NKBv`AiH?`>U+5Ya0 z?J6H*cB=0^e0R?6j^0aI)gKMsO$fW)K7FIxJH_Q2B3!TdoDq1vWLBwI@}0H2bqs^% zs3$+3rxZR%Ur%A5XrSMMld>PC{s@TC&?`DDWLNqqAW6eZPt8l_54-Y@ljqz&u#5a- z=BjT#wBP$7zs8^G8h_dj)vuJ^x5h!eUb|8>J^sB>dizbW>8JO;c#wE6so!}>bi%&cSeUx__?KW zy1$QMc;~BEqa}Zg>w}*2{alUbOwN|!i@c(u>`y7n>h^OzX6U=4;cB|Z{lpy`FR_n? zLdT9zOty98`z0uJLf!C8mDg0BOPzt|75pZN8T?Bu?zlmCwV^Z4KJ zN?ubWVA3NQ7w%eL?&tFu#jjsHSm_ zu1@vQ_^Y-!_{G$3C&a%Ty{$Zdi>b(c^;=T$Yu0|OeZFm(#=&cM+8wv-vCgQR-`u`v zYsjpGU0;PZt(|Uop{g}${q(}7uUc-=_D5Y_o1WQL*Je}|m$J8W^V;nJnR|PmUegaq z{wu_L%{n4|Z#Vba_=iESukW~3#s7Nk_lrrj4ae8sPuTobaa+{>qsG_VZ)Df@n6F{} zG4(5_-R8Rf=4;EHw*OOLx|Y6Z_1B3fHtrMHyVky&@mlR+^65}?lxU|+S#zX4A`piEuUAsT5++q{{xGb}`CZlts&8u*+B!$jby?ZRxcI}*| z9?KGY`mkqja;4kj_3NH?&dIHGyD827`XEQxOt!5@B4(agZzjXDTcoYwP(kORgdOah zS`%)0ttsF+<$K&fW2KQms&NsE<-5eqX5UlP|GiJmam>W|d7XT=VBjH6ID`SYzh#D7#ki z(1*V#EV*JH{|nGCwm0iIdHVWx=uuFdC!pjg^}nzpRd7PKIPs2AMc1` z4_V(lG47Mj!{KAU3&5z}*CV%hQ(Jt8aOK?(k;CF@J-rpa5;a~CZqHfk<{nsbvZoXm9@vmLy z&PiKVXTQ9TavT57^hvJ5Grfv#Uk`ltI?De2%+A#9_c;B3b&1WeUEk-oMq0i8 zn^ISkxbjiExg{@oyxxdSHgi3kBOQB1?XZAo+VgJt6Y&gghjNyOJACaDkZ-7*F{Pu! zU-{8r;RwcS-Mo5#KfgT3J>%4s_x|g0zHOSZ$6%{(+zhGpNt!`N--Tqp5D{;doGVN;;rjPIf}R4VmTvJemdT%PUidDhF{-=Lr+{;a&ULL+25T_b^5ixGlMp*iP#io z7swXOrZW+n&LwV=>d-NsxTan(^1q!{WWG%En)&Jzz6wnI z8ZbrY-}jCf-Cs_vH+S-H>OE5}*DIay>W}fMW0UUuNxyJpfBxyI<>B4lPyd@3c$69P zpZ#RV(s*Om40YCJ$N6th?lSS0Vw&g2QDvokesW`tzgk;Glf=VO~A z4%<($b1YiB^lPPZ*3%TGM<*NaU!I(HpWD`Uui=Hu?P>SKjcxuKoW3l-bROd*?wHfB zJ&#S_>^pbUi#j7dlMea2cV&|oh2$*U>1?<3WYHw~$*IRA?m8DHB zSK9heCEq>3=j3eRj9N~?lP9)KUSV@N??~d7UJIMYi4|%W_Ndo=7d*asol5+Zd48w; z6!c&2v}ixo>hd(x<>?{`t<9oSZ+4w}BcUbxexmH-**Y)k)c@TU{K=@Za{A}nZhWq9 znkRC(c`P-vpGaq#oH~#s_lbPoII=ka`*-dV~U+lsFeD)E1^bM{Qu7Yn)0t7g3d zp`_)}6?%f_Pd-@A?bgZk^|FY2&gUy>X`NB~gtpeOIP1-CQDjzPcYBhqp%@`|`{pAX zmHLiHR~GDdN?BNLn6F%CRfXJWW=DF|+o#*1F!%80ptsdyS1YNzT!8b_?F56`EJqw&>P@|4U}C zULzb*vW4{}=f&;MC-S+v@!hz4&+&Xj-{`YLVbMUQPwb8G8j-j>}}%A9e|+hn%<1h@ZfCch3pVe{Oxg6ERI z(3!MtlN8>S27K+x`5f@!;l@~_?}9UbAN9^^KR6}$&7|obi%xhuJ-Y7^_|LEFQ@_Ny z(m<86i7iKq)^#hb=~i)9iTXIbb5^*O1Ml;RomVPOwp8f;*!wMTMde3{D|;$Tvf@PT zOIJopoK5P@wXk>W-*flY*`&qy`Bvn!Uwy`P^x>m)t<-%NOA}_EQ)IP^IGdjGxJNUYXZdrE~w)7p@&nN{5g7shpqu!)BfH<`+1*L&GD?^O$a$a7itz5T?ed&@iet5z`RR37Sz6!Wr}DfczhZ@qEo`WbIIWhVVM zbNMp;$$O!X`@OvWJn0kIKeMBLQb&DPNByjh`%XvlRUd8td%olUR;44La=lig1X$Nyn9Ehj9^)o&=yuk94R6ElmWCaCArQjMqHf$1?pcZ~Jq zkAJmVP$e6(*J4Fs$AW#28h$L%6`XGA5;M=^$d>mF9rpzV_lwWpruvAhy+d2LbH-O$ zfsgD;kNO{N-sTeXRG_d_Nw9byv(i5omm0l&8Qw=s`2?@42?c(W75Mo401KDK|3}kU zlgg5|J>13eXG)&x-A=)J-+jW)6TYjr*Zi&LuU!9QHh1O1*Vl4>o=?3yL1xS0J_-3( zP0yC^SD&Jt)A~g8WB>aeLr=we?HD=ZsqMt;k)mb&-t#k%iiI=_{G1DyW$0WI~eb+sI_r(#}mH+usciV79{^q*P&cJX{ zjDf)h?>_wC)DjiU`ByHytkT@+|Iq74MMDHb)EnD9Fj^f(#Ci<|Df@ZFdl*diW_TnGx7Jm=e zGqmd;m>#s_``HYgUiVGHMSexkU)}v(S6=;nU-_Tq;qiOe9?1P!C|dp~Q1X4QD@(un z#3RCI_WB?DE&Rhl`_YdDJ^Y_9xkq{auqc*K{bZ;npZ1s=Md0h^YsycygUrI)>=GXGu5O}X2fpPzYgOLxis&4L$p zw4}u8&sr6{(UjBJoWr=##CV?d%6Vb#yjOMl&gsm#!gcP4om0R6i)HWLOg5OC*C)HF z{_Uv;b6Q?Z+3K+_@6^j>Wji+QS#Z<+Dr<9?RdHCO(3+rGFSl=(D4q7DZRVM5zt2}D zI#rxeS@0lg+D?(%*ExNhZgbv_Iwx_<$n(Z|)51VenbYAfR`Nf|St)hqo^;97(}$1V zxP0gGvCtgF&X&Kgr);=b7qzTDW_QI+?_Vxe&QHI+l@0TM?dsPw`$x#VKtMO)U7Pm`AEaea1Hd?qc`EjcTyEX77UQDN^sLHDb?i7I7I#@sb5r+-=g+OmXw zv&yy8GoMZ>4*O%LrWm-v=T_n+$-6?&L{@r;C5oQljLw;roN`xha_hS<2{$6Uma@C< zU1TEb;jNdkYvF8H&hpmwy<&=rk3U-?F=C+=fH$o=qnnu{XJ7N^g8J(`|{QDTILz7{# z((UHnVx4c#b#Gr3yE|FbvUq#T$KGvD%pHcDt(|9T6??-srxq=Ib0h2ENB*qI#&7a2 zuf4cu$Hp(kI;z2ID_19pZ^@i%z0SUbsrN$|>-wXIjp`geKRcEu%vLeC>F$o`gZzft z5Bsj(*wnUAG&K2=URXs$+BuOelbpr1Oq-vbJI}b<>AyeEjV0?0uk@$HWW4g;d~xN2 z<3Bo^=0BRz)a`SxX}gw1)1D^p8KEBpcuxpnZ<0YQp}upo?1KcBX8uY57CdRs&>{rIp&|4?rLXtz1QUZzSYqSwAS%$ zYreOwtbR@9)z@neuar%nQz)3a%4*vl-IZ3gJQsw&`Bh!L*Lq#xt-Dn7g58tnJrv|w zJXv~5U4Q5O?+g0(UDTax@i$DJpaqr_us!RulcKa zsXVr}Vab)id5fP5ChHrReX&_|c)DP<)Y~)fl)gzWS*K)oUvs^}$4j9q&m#*Y*B;&- zcA;#dnQQi;AL><0>JuG)ZRbcn!20#Dgz!1{+EjX zomE*n^MPgk!Q#3jr9PG+yo)A2-`)1w=KYf=p6eA9|FXwkT75(7@AhNA1@HeBd}v(C zJ-4-)@x6P^d-s;}p=(!t=QP_8>UOUCfk38Ao`_@CT@I$5;({)VJY14qbRF4fs$|}g zuwMS4&t#5ozXZ>i^fs(xTqMINuf8tgQ0a!hP4#;o?~(K5tQQGC{`tAXU9Q{He)w^^ z-w|=ixv%gj@Jv;Q@e@;Xr%R{v+y#mzH@qpF`e%u%q57n4T=TvheEEpGy!`W0hO*;q zcjq2Ad>_CfV6D$4V4lx$QTN*IjJI!lC+u!IG531sA3mAy6P`0`zTPuVb;T`N5cj`TS>%ufLu7x|(mh z4Yy^L+(of>Q!;v=-jh0gci+=@rgJa7jeN!^w79vnf&ZS;%o61-8goJ?r@S}%_5a3! zl>58X!c!;j>uFwV`0m)+i%NU#4)1<=En!;z&c3{eMW$7!s!l}mTRv5~U)H)#jOF3) z><7Ww4}wcSEYCQb!Lnahod7f6z`jSvEm+*L+R}h8a=}49bKW4UjFmYs0fEMAAj;(l_6{>Dw0V z5ybKEl90h0Atu+2{=ym))J#%2Jrp>u-a45!$!Er!obOJ;FJf133)>JSs+F}iYD?16 ztt^^Lm)={oc3af@TUGgQ3CLf<+qxbl>(Y%BUlc&yTo@{h1WzM6ggM{-msCKkeh59`TevF30>;&tw`; z?u@ZotGfAa_1BP?^C`QF_uh>PYq~VkC+nq|^VyUwJuNdOb=R(T>z{V+MOsn%^Q%Hj zvQ>SQ8+^ii)2c(1mrvbaRdM^p&FTM2WewX^b$a+yFRi||Mly5WinQ)oSrY|bUSpq> zWj6hq${J1GySod!e|+k-;`8nE#|!r9r>$PR*(Py@r6ZsDE!<+3^X_s> z@~l~Eyj5YsFPENqS}St!#g^|czu3gP*|mh$MyV}S{r%;M!}4a)OL=Ejvdxq|rCKc6 z%M)p!=W~Vm))k*?vh!T^8rRK9%rX9|@=(-e#q!9xJ$XBy9%DPK5!fRmGdJk@`;dwo zZ!Z5XHS<+E>HWv1rz`te{PZJ}KPpWvow!TYE?Pm|R}^0R{73weXnmD4vZ+Z=c1+~)uL z+&`PD^JitvH&A&cA6mb)TS~vj=lWTJ6Q{eLXFK(C_N_=Jb9&}${@}3FdiFPz%+{o!A(b;sF7{xGfTiP!oeTDSIr`H!_t_Zwp*Q&!$j_BbeS;39i#s?@ec zx8A2|SFl>{`o8p*>#y`0y?>G7>UHt#t z6H~SI#SGV{@FX~ITyJphq`kgWxBU5q5}PL8f0ME2!1vEflrA=VzudiF zGBu(z^vi0s2CF^X*$NNue$iHM&<;3yeg3`Zqranc7MPauE_$7r&OUd_3rpiFuAnbG zOuPLTzENrFzZfTJCNS5}e}SxHNdlW$qVitNYm!?YW*sbkUvgoxX^v9v8pq|68LQ3} znH=$3c*p%{wMT)qV+ptD)@zEZ*UdEXYXaZZ=r+9$hpN%mnvI88P}iQ*cf_aBv%#78Oq zKV+0XCI@VrNjI6)*Iw?=2kSQlwCTN`$OnLg;sUEUWaqfDMVu6Ecl{DxdqHWM|=dM0&*} zog-_Xi0qa~bUF3KNB_yW%wtGM>?wJ*Q9Q^S2hR_(rdzcPy#tZ3i7S8ks{DnI*Nxze*g zT0+FvdA1&?mNcpj_R-TcdHHrn<)xV7L&+btCp&Fv+Bp4NPtu94aZj!<@348(^3(Lz z!($t)#A+p;9(=qpz3?QnhQ76&b-QKsqSMC>zH_AM_Rn*RWpMxGdO`Kyiwxdri#w}0 z?ZboWH+U&~C9?eUeOWu1>8Jdz4f%oMb+eb8TimG=rRW)<$-2QyOSoslYe9$S=r3IT(nQSTNv!XbFmBaJ5hYLl*f(eQ&#hm)FW|%06xAh`93I7is#hmI zurcxYdZ=0Bq>BdM?}Eu2s#hj|58Az({epvR^_6Y2Z_iNOe}Cfpf+zept~)zE$aPua zeD{wUZ=!bXc7gX{chY`ux?Sw8_cf&LO3A_Kpa-QEHfJ+GZNL1gZ_z8g&#SWca=dz{ zvnp?6_}ypS3*I%mUNx<_`gSMBD?1nA%in|aKW2IRJPf+;S}m{Fw&zNBj*sBXy4ydM z_aE-AN#HtBe)*p5(VV<5O7~4&XWNJIRL&Itc|m02OY^CpRU`EB-hVOfcqit%`Hx6a z+#mNj{Nn%g&W4{Ykr4?!yxMt-))!XqRfi{DlF{s4qGN66Sp9|h{IWHInxuqWU z-+p>ev0|rp_=$_6hth52Srom+74JXqzw_n4^8N1fw@&Ql=q%Q9Pd4!h|KS{+IbAm6 zX4|u?iOVfSs*iJp&XirGT;X72@18tmf4qv6o1j$Z!~bYkt*G8m^zLV5U^vOlz#xp& zzH><}EKP;9=V~XN^kZ@qXj^@gjZH8_O!Rx{2Zf8w?5cB)9BFBh=wZ))9H3xfaN~@? z{Ikvc51b{l#U_Xxb6);?^}7G>f2n`|`u8Iz!}Nk>2Uar8Vp3&Xb@kZHwV|)WyXP<87BTDdj`9l!S2o_-B$F8sHF;TR z{)e*%i?@e5tg@dbKJ`@fO>M3d1^$egX;Q)p3NG3{`-2soG8Mfn!n%c>Zs^X8+Y5D_zbvyqC7;aK-ee_mjW> zE--lP9QE%dN8jGRPtdLbk1f2j*pY>S;WP&WgDO(|`DEs0r=~dNano zYkA0?)k#rDd7N*Ey<-rB%xzQGrRTl>dindkct$f78%fEhk@wB}<&(ytA zi*IfcUv?xt^rCiukAcbA2<~kU!(^@MU!GuIeDur-iMd^;E<}c}G1&5aT92u6tkIj+ zFTFce6L+QXPn5r?q^8&WNH1#YJ;%1qy&q1-OK#0MEt~wp)8xyW-JUll$DPtm5pR8U zYED7du^3MeyVT1XcTHrx-!Z2~1Sv#CUQe{RZ{S;`s3rS5a9_k-*IhSWYzUvnDDP^jfwCCUq1+#{@vRQ?u)#;%@Xc6wW6sZ8ST%*-`Qmb0#vJzS>w%P8?kTFl{?bJDBh z3f6ypU-^EKIdjV@J*lZoUk`N~o&FHB=>3Me4W(@!i_X99dekxXlhnr~Gv`+e%4Hp2 zZAjjcn!f$*EuWpQW;~jus$KYM0u#@P%~n+faqcpIt@IYhAJvt8|JbbXx}m~U^@6D5 zI(8R6DxQ1wV$%Bl3;wnDxnniXhnzj?RI!fUwS9G$MCcrseh||_~YIcM_rfy*=Zj+mp3WkCGTYs z(OquMB@;Kf-|7EvoV@#hvrxq!j|YqQYb2ijt)~%sdw#{)`R4n*#HH9iDE>;zY`FDu zw&&v>gB^3kqvkKv*K$|4H8I%w*RpEY>$hvy7X8VPU8vso{NyF?)tQ?LCmo-(Qg_1> zGYi{=yq8)E9A9}h)%U9X<4yV#9iuYWFMa7#pCmz?mftW0lqDD6>nJ|Oukc7oBH zi@nNTAKxpT+TVO`zkAdD!xH})h5xvxcs%>DY`RnX^b$J{MK2C!58PS4icv`Ou2E_jir z%l?vQUu^iR8;wE7U)^v$Fnhh%5#frdmnI4BX+1cBl*hQ~Ovv%L+nBN!S zZP22;MCz_AZ;j}LH;QJ*i!}SwxG(11^)#BVytr)p-CGrHkMcV{+|N{yU)*c&$o^mW z?w|EmUABxzIbyr6@711gC*AvM&RoW$8aM7|EEW@roc~hd-iIflbChoSt>*hRy>L?5 zTNU94=*M_1is`&`fRTY=Ju?G?8i6v%FFz#}QV8`1#rg|7ir8M(TYF_|w7`Zg`I^n^ zoUXDjy6}bZNXwFg>{3E<+f##<>0I7*chax;Kf*R9YIYx(e*_*g?#>HRoYKDY`$Dt~ zXr{;Pt5*J9A@0>!k~>{+weYFpU4OqBCV!iE&FBv2pS_7MeW%s#yK@2(zWi z$-nm^W7|yk%Xxg(d)p>2^J}5e_x+CAR)KTEzf@Y;L?xun_`dgZe{`|sIotGo>SsC1 zPVb&=K7Vo1ZT)9_xAtyO+^?a$yu$ls>Ex7TCT+7#6$y_OKbdizNZ+VsVD2@=;o<*v zG2+)(%-O3f{(eWBq+Z6X_S}QD%3g}@-mE9@F4X0@%lel^ty5n3?}F_wmhYJ_aBnta z(7oG?m+swSxaJyD-&NLjx1m3!E@`gswcAN$l9zj`uK#@Uq*21Q^Q%NiijL^w%K>!OQy>faVWJ2Ug- zlg6O^brbe}zj^-a|LV6}ui2%~`~9hNdB=;Ci#f}qe&zf9OS)-iVe!J@WxdRnN%sO@ z#y*PyW`beXxL~s$ITM9m`w#IPj&i=7JhUpy&xiZ{(PCA%p8@1 zMZRyVEc>%#;VpXT^>)5o8);sf1=`NWO4FIijsQdoRs28hfk`o z>x%7+ITd^~rEbO}fne8t&OXAIL#x=nbTGC3>(t_s4bknAIi%WUS!nIjIpd(`O0Be2 zNz=6a!j9%RPMekBFk$nt=bzbD?Xuas_gMG%`ZHB8TFX=OWBXw^lKs9 zLR*`JR{z;|Z^3c#n8z<)eZJLq@1xiChs*Srb8p&O&QjIfwCqamE8a7+%=5D|W82qX zzP)YB>HD{CKD-_9)^`2*+2@P(g;L`0Zany$^Be1ifP*WTPf1VLU3EZ1+vNz?wy^s7 z{5w|&irjzo^5d2=mhFYw$2g0w=6=fgHsu?u^)9dIzx%H3b2#vtds!S-FZ1irGI9dA9W}V-v2?yS(e);Jmyi`o=sFP03h3$uwH1|16FF1dpdFECw z$ID#q;Z@V_m{#pCVqSLm{=Ij+FCKC3*LuddYt3bqj_+Hx_8vJjOQ1v~N5Ud2dH(5ReR=O^TGSS$=i2q3??1eRE%5dG!#>yS zwm8molU&oqYVq^TrHE-WgDtYwM_8HUen|}4pHoy^7_lMJ;lkzXyC)j&H!;0cwqWD& z`-ivQV0rMhtaA6>9By4(A=BW_HQOK8tl#3bVS=#1C1&fVw*yjVoT}gubWzptHqQOC zD$I9N7>^(C`~5qk!nx17_ISR%F4uo+{Zrd7;cQIva@SmS)ipf7#67_4jaWfYgv4Ua zZ!XuS9dk>meA=7pJX@P<=T?u`Lh@hM^RX!uZdrICtMYTy?mcoj^KOYTZ0!9fsFQPc z!?X=9=C=>ubXYrAeTK!EC#H91TzGqPm(OLMHwE`PCZA;dD7#Cxos<7y_qO+uhSE-b zYKh(q#Ti#xpT7U_I%nN0ZYM{_Y1c2W-8mz!x#h;(kc|OZvzP0dyj=3aGrMMDag?H? zIg9MV*;=OzRxjUr_4e)A_Qh&{63%w)+POmG+sR&8UybPWw)FW&H;4CG{eH1AsQTxo zh*z0HYl>?1k7V%9yZ4-TXI=6miNwZ(=d&aqmd-iv$oPBv)qndOw0#)c#U%|@W*uan zyQOW`oD#mdua|_qdc<;VRlyn)%cDwx@0OIdbY2to`!vO1i`0u}Z2sY?3C{Ab*FChI z^F_bJ>=CoNt^a=a2@gcNU0Z{77JAS9Vi5aciI|mim7UadfzUaRmTVP>4+)yAHOL^xfhoWBK0R$?6pcckg(YSGT9{-P2I{qAshv9h25M zy^&v==NG6i6|(V^rr+Z~CCe?G*OXmSteWQ7f52K#qGxlUXu8!=skGPpC403tFsFY! z?A>FQ-NMN-*Q96OVf!Oj3L{=b{E}VOx2cJvq+QB%$8-b6UTNlky0>`Lj;=_Y%JJnZ z%ii2&ch5>*JlnpkHN|wb&*D#qE}!y_V16gQ;y!3i!?!^KDU z1jeu(@Rzxl?==7Rp11S%txK4EQ!$Zv_`8ma?n9SI4nA~#%cPke$I$j_0D;&aSH+i z_w*m*Tvh&l@kb^#d)8JJN8WXl7-wDBQvBiWhAAhDBGgyBS|qc^Xl_lAk@&0PfZNW` z8z;D&TEg(vE0dcilUu{1cGs557fZk1@0oOM_2m~^S@%jfN@+IFIK#xE^>E$Z-WM9F zFR}{k{yk7Cb%~$k+qF$7Mg6h<$GlCEWjkkmOo`p@9@hEm@03e1I(MoyMQ?nY;E;Mt z(d$9cEx)dEWqA$lt#@~+hek2~U z=u+9A?XTw4NY{(Y^Q&h{spknkQt9oyWGQH+E_t}PNcGZch0|9bJdrxFi#aHc+ixAS z`h8|~^M=XN2T%GgE-E@%SX6ZKV?omk_vcScOHx}`C(J25+I~XqSGWA)o~r564R?ED zUffcMkXDJzm5Ss$$yk;C&HZA5^o)IT-?TjTEe{gWqYB0j7jR^QnsikP7z`A#X6^a-@)jiK3!&!%5?8FtOcAqceuRUyzJfN9ifj8 z=x$XAd{y6R-KOOuBC@SpbVBC~29-LgcTdty`sOvR{bTv`lK#Sl?1f76Sf%$b+WAFB zcUk=9pkKUyF6KY{UdMj_+n$#tTO^h*cAdxKqV%Cn%9-!Wew|lPp_YLEX^ZP$l=LXS z7N4?OmM?u$toqxmo*l;wB)`AzJIJfrxcpSp@>6yTey*1Z{}?xGOGNdFv-hqpnC``w z;KTK;mg|`B!j(qm)!pI`X8-Gu(_eW0w3_`hvkAKr&Cgx7b>6Y|a>ng7znQ0sJfEq> zXg>daXyNin+Ut7{Gccr;QB>W?T@4l%*-!D&j_GD$X z=6{EXqsLAz{-}3o>3*kO-+eAEk+`(v1zTybOZ4)KVv~+JDMe0y!WME@B6?D$vR4ty zq#6!SJFAJ4?xfsU^S0tqYLRpFj_J#;zx*9`Cw~3(JA0b7$~1c|Vmzkrj6BtU@t5W; zdvn*aoz6^hVkCv~%N5gMt+U&%6H>XEMXPkfJDYKYU>u!$F^Z4YhV4F=AejSrJ z3Xjb#D9kfFveWVYrb!p3o&4d}y0N@KurBuo?;MV9haab>?~MGA;xmDZe?s1^1Ctb` zBa&_%VA-Ui-`-<7ad*XQkD_I*Pknx86{RIM$()$^yY%TE-Dlr+x!=22lk?sr=lvJq zeS5bb7g?T?QWzt!T;kCV{~Z?P2kN4hSe#$fR=%;u;(w)f@AX6Nl1*iNau>~o8r>@V z%e|L}G_00>_&#N3w#Bl9QX%!jMQ4_Y7*5}G#70Yi+u*v>tk#-|8pes*<~@Z!1=K_H zBpw${o?JBHtmO1V(fRHYr&n{eY)X7xbA3kPv$+g&x*In$S@<)a^Lnu6P|Vc>k*sr0 z|66GBzO5?LV*Zupu1GcgD>3CBO`Bgou+uOz`0DN=rlt3l^+@c96Bw|&(bo|eYjaF?{?0XR=-@UcPEZ(h(=j*6c~K8^IIp&)Hn6( zyom=y=Li(^GF)dVNN0>OKCrbW`N6t_rQS`#n=hof|J}7vDr#2d*~3p$_W8~`5v_63 z%Kz%Zr7L$|%KbL`-2#>FoqeH}cenMYMP}^Feg2?0^)0=MlDPNoAnQFA& zjpd$);C9uAjb`iH&9*zvzMZ-1hQno7^Rpt-nfqQWFq*RZs9KiGxtOzz{gFHV-f>Si zSiI%jg^#7X`ifuHZPD8Fh2iayti-+X=`a3TO}_Ws;eG!_i|njZ3h%VTenve_OR?|r zebH>R&o0jC^FBqVYR3$LmOQqF(T*?71a`@`%;R^`XIOaK@kOgb$!~k{h2|HXtrn_U zE%deORNZ-I;Z$Fr$e6S{j4G>@N$n{O&RRoIC&9BAdQc0sdJv`EwML?@Zv1pHrCf=nHrJk9WT}Yz&*cZ`!Hs zxjDUYZxk;lt=c%lD#h?>gpcf|8_LJNnlasYb2l*i?~iPz#}^(3DjTgmBAh?7cYW&L zK<~FktWUNnGVb(^S9o*%SF)eAdeyD={^DDAlV^XM_;}7Yb;ISQ?*6}D6#D(XJmd1Y z-g(>p@7TF_!j^u^(zLHL#MgH1ZV&7)IJ0uCKoGxUzvRcFmPcp%!}i!NK4%m1(L`ND zyXtN-OGVl&F_+6G25PgCSR;2k88Z6x`c?(+UTvX&*~)=?v1Rq0FKL(a6gEriUC-MQ z^IKqgw)ury?T)_}*c9yIZcx1#_hZ$%JChi-x{v*Cd1<=k=A;&%)mcVsC*J>^BzcXTi5I;))OpOUdw?V{adpW2?#2-mPr>FlTVE=SL(`tCR@ z=1pCX5qpN+*9OKw}vG@=oDZ+w8(ga+O^oo=ZRG_+C`>U>rdrZeLVHyNe@Sl81Fw{ zw+B7jx*=sNo21^ISsr`X?^ek_{3Lkiq@9b)C&7*%(u*dY7toVmsQO5Fm5Zf|2iu}K z0*cu@PS;#^I;{=geDSnPN3e2A(2NOxlT}r6d0Lj#*E;nzPSAHap^)nQkI8jHbYMo? zqNWLsQHyS@5PDiKq4-DepXc4VwX1}KWS5FozI(*pcD4QR;ltsYv&9njWrk>dX5HbY z+hHT)CA8AZNL5pF%CaSwTvT~Ye3oRc&<-?OA@Wq9MBUeHLAdmV)r@;P55<25``d4E z_~yDuuSYYkaPk>B$z(kHqPazW!Sd4TkDSkv^j7&i`{EfDqkgfgZBp};usO9WmAn?n zt@i%0`rf&N-@ALmh5rhMY-pU#sGHy$p;3I9TTNA5#An&ZQzEk#_^`76oYH@1txvO< zh(w>Z?EiHWwyCR|aaTwU{%gx)RWIl?E(yrpHn-16Xg%e?-`x6W9;>Amt+i|93S zor~BGB>%suQ+!!9y0CeXxpFOun^V71}m4VAMFFJm) zb2-oVe9HGrmmdEQSUiX6hxf^qA@!`w|7bsMcjr&?Q%m&oka+xg^Xa62b7bl~vpTfm zC#{ND$nm(_p&)Py-*x9hp%?C7)`+#7TQv2mNo?j4r6-%G8v6#FmsI*HGx>^^rtGKO z6$_rfxL;}-)6p8iTYV;N*Nv|YFV%e}KGTZ5^`W;5%4-u%-8D*YUO+bnG7cGePHEr)k}VDkXiF{-I8^idT&kryfS!aL({3&Ev`FHJgDWG zt9|oX@Xo^t)$QlZrq^kISCaYv-r&Z)#3bwPM>F151kN+)_`K@Bna>R0gYPeVt^Bq3 zUCi{4=4ns9{SCRxW4%G=Rnmet2C~AxCnO8)YRw4#um10!!~doJwGs7=ae_uyn77!J zNCbUhcoyj@9Qfc1o`*-T<@z8JbTP%bD>Upu*-r)dpeZ=8L4Wl4_fspz2ar~ z!)0;p`{dhn>x7U0G0+XWXSAnOXsOh_U56g*Y>Hc8KZ{8el;^cmIF|JLO`0|5lEBB> zC$3*=JO3?FzQ6pwaTh~nYuTQk;x0ii144t}+qo24pL|)AZLjzzpO{9SWZ$7!+8 zst3yZ?_8Xz%eGzna7X%L7lWLi%VmEbGvi#IzE;`m!?D;B7SVgN<5o%~t;o)MPVZoooiBf?AVO^iYp-$2q_pJ3!}H6I`0fs}oa}A>{d)RKqp(*y zlJ?AC_giPK!|!rS{NjQg&FfA`NC}H-xXgQWKVEHnmb0X8|0MZr-CRv+t?f^ESmj@I{rQ`5q4n#I^wluFPcChy(X&m8HwzqI zwRBQ*Gv`7XnOaxji&D&od2F}8(9b_(bY_v?6QQ#Ql;<6HI@x{1yRGi_h3UL|6JKbz z?aO+Ry(9RO)yKAj<-GgSKh)Z2{8aq7n9E-6-jT_Z<_qN~?tUWs=&sh~wIcb|70bfq z`PRz4opG4^O4d8H1+BBLO1+L}WMD90#*sjRQ%fKTq;=9szrzLsZO51T-r7{USSNMz zgn(0x9DKGHx|oBs6+;U+^dG3Hm8Pm{6mp$E*2w-~p}^yi-c?sR4rl!7P5<}t#=n0* z|1dQ~TNppQ(IPDD$2mjqaTB{;qj$E=;^HiBsUP1yryPs9`F>qHM~KWj_7F8e<$!H* zZGZKo8Ygkwk8JrD+M-yMeCqE?u8@09if%Sts*Tf@PSuIz?%m`i8$9*qhln?u4jkTW z>m?Sr(&YB(PcB7?`i~=ST+HJM_##){YcbP;$CZ7Si`TeDf!5X)@ z+@@=#B4%%RljbM+^-@{*FYT+{^P~T3d!KS$^~XTs-rDT@|4n17wEZMJpRGL+I@h2x z#_SPO{HA@kK178+%znw|ykOdUrv)oBlLZt49Bv})c86#KERuiNrah;0R$XOTdhGf z40AHDK$!vzZyiBQU)K;vT~9wZ{ePzz7!X=H7;H^jt<^Y%YNHt#7}6LR7(_s-p?FE7 zHUk3#T&u66pQoE^aEP9-8^QzzunABNV2T4wf(Vf1JCF(ygf57^PZe&SnajYyaFhX( zmOy$ycuC_uBwdb0MTwP=6&Qw)l!b22k5fA}9xyX7^s_TCsDKQB;w6on85tO|ii-@* z%qsMe%yCIA^ejm&N-W8TuINBF(edBfj%)!222FJa1_`KXAZkhDRaR^!Vt3a`3E9V! z7#SG&Sr{0kLE52sNn@E9!W5K6CfE(qZ+f*afSG~eCL05TKGYBpwWQHe0$~th%Nb<# z3M9;&eO&PS_36s9Zq*zN4Ch4|7&JhpLh+Kud(wmqM@&bfhu~hLLut>r85sEGAq(H3 zhB7Q^oUcN_RP14plm9D}gOPz@1`~QDA2YyaAZCq)?!-&4r!yHdF)-X_VPLR@xsQQ? zVM(Ka5jGQ%F4IzR&d)7KECN-Cp~abb=}<1t^c3~#Kyok>1H)1_28Li1tLB*ywkj{V zw5TXGuLR}*$OYFbE~&-Isd*`xdFifsB}J9NsU=~VspZ&1Z|%YxtM!=}7_8YC7y?lo zkYr8;2Y9FAw_eewaqdf228N}43=Ezq)-zauwY?eIK{=l;ErN#fCJgq z67uV=JzJievoJ6`!m#wM3)z;2CFYc-7UPaz(T6&P@d6ACtBfFN6(%9)quBF&h z5?{?tGjC8HWMyDLu5^|(Iz_WD>Fr?icKdS?*N+Uk4@zhF>fU42CF1$K?@iH11}EZQtRNU{(eO z4ju*u9Tel=77%4T&iGDOS4@8cYTU4*he=l%A(K5)6H`3%Qc^3hhl#SK3k!@TjT>5tFdS#(Wvp5gFp-sk!H*w3D1LSlG8cD?OXH+g z=No1Qh8_;|w0xnTkg36Wi3PDBf?sf{B4ahz)XIJ0dW+rw}y0G|4xy z0Bkt^awSf%FQ$cwfnhZ(1A{5d25_0rF`YO|2u3RUz4I_zmNedgFs_uH5#ARk+&M!ZXF`}WjT4JGNM$W68%V7I Rg8_rMAOnLgHzNZB0|4CV;=up_ diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index dbb485952b..e0f4c87e7d 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -149,8 +149,6 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val jetty_xml = "org.eclipse.jetty" % "jetty-xml" % JETTY_VERSION % "compile" //Eclipse license lazy val jetty_servlet = "org.eclipse.jetty" % "jetty-servlet" % JETTY_VERSION % "compile" //Eclipse license - lazy val uuid = "com.eaio" % "uuid" % "3.2" % "compile" //MIT license - lazy val guicey = "org.guiceyfruit" % "guice-all" % "2.0" % "compile" //ApacheV2 lazy val h2_lzf = "voldemort.store.compress" % "h2-lzf" % "1.0" % "compile" //ApacheV2 @@ -312,7 +310,6 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { // ------------------------------------------------------------------------------------------------------------------- class AkkaActorProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) { - val uuid = Dependencies.uuid val configgy = Dependencies.configgy val logback = Dependencies.logback