// Path: dragonite-proxy/src/main/java/com/vecsight/dragonite/proxy/exception/ACLException.java
// public class ACLException extends Exception {
// 
//     public ACLException(final String msg) {
//         super(msg);
//     }
// 
// }
// 
// Path: dragonite-proxy/src/main/java/com/vecsight/dragonite/proxy/exception/InvalidAddressException.java
// public class InvalidAddressException extends Exception {
// 
//     public InvalidAddressException(final String msg) {
//         super(msg);
//     }
// 
// }


import com.vecsight.dragonite.proxy.acl.item.*;
import com.vecsight.dragonite.proxy.exception.ACLException;
import com.vecsight.dragonite.proxy.exception.InvalidAddressException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
                    final ACLItemType aclItemType;
                    try {
                        aclItemType = typeFromString(type);
                    } catch (final ACLException e) {
                        throw new ACLException("Line " + lineCount + " - " + e.getMessage());
                    }

                    final ACLItemMethod aclItemMethod;
                    aclItemMethod = methodFromString(method);
                    try {
                        switch (aclItemType) {
                            case IPv4:
                                aclItemList.add(new IPv4ACLItem(address, aclItemMethod));
                                break;
                            case IPv4_CIDR:
                                aclItemList.add(new IPv4CIDRACLItem(address, aclItemMethod));
                                break;
                            case IPv6:
                                aclItemList.add(new IPv6ACLItem(address, aclItemMethod));
                                break;
                            case IPv6_CIDR:
                                aclItemList.add(new IPv6CIDRACLItem(address, aclItemMethod));
                                break;
                            case DOMAIN:
                                aclItemList.add(new DomainACLItem(address, aclItemMethod));
                                break;
                            case DOMAIN_SUFFIX:
                                aclItemList.add(new DomainSuffixACLItem(address, aclItemMethod));
                                break;
                        }
// Path: dragonite-proxy/src/main/java/com/vecsight/dragonite/proxy/exception/ACLException.java
// public class ACLException extends Exception {
// 
//     public ACLException(final String msg) {
//         super(msg);
//     }
// 
// }
// 
// Path: dragonite-proxy/src/main/java/com/vecsight/dragonite/proxy/exception/InvalidAddressException.java
// public class InvalidAddressException extends Exception {
// 
//     public InvalidAddressException(final String msg) {
//         super(msg);
//     }
// 
// }


// Path: dragonite-proxy/src/main/java/com/vecsight/dragonite/proxy/acl/ACLFileParser.java
import com.vecsight.dragonite.proxy.acl.item.*;
import com.vecsight.dragonite.proxy.exception.ACLException;
import com.vecsight.dragonite.proxy.exception.InvalidAddressException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

                    final ACLItemType aclItemType;
                    try {
                        aclItemType = typeFromString(type);
                    } catch (final ACLException e) {
                        throw new ACLException("Line " + lineCount + " - " + e.getMessage());
                    }

                    final ACLItemMethod aclItemMethod;
                    aclItemMethod = methodFromString(method);
                    try {
                        switch (aclItemType) {
                            case IPv4:
                                aclItemList.add(new IPv4ACLItem(address, aclItemMethod));
                                break;
                            case IPv4_CIDR:
                                aclItemList.add(new IPv4CIDRACLItem(address, aclItemMethod));
                                break;
                            case IPv6:
                                aclItemList.add(new IPv6ACLItem(address, aclItemMethod));
                                break;
                            case IPv6_CIDR:
                                aclItemList.add(new IPv6CIDRACLItem(address, aclItemMethod));
                                break;
                            case DOMAIN:
                                aclItemList.add(new DomainACLItem(address, aclItemMethod));
                                break;
                            case DOMAIN_SUFFIX:
                                aclItemList.add(new DomainSuffixACLItem(address, aclItemMethod));
                                break;
                        }
                    } catch (final InvalidAddressException e) {