// Path: src/main/java/com/lastcalc/Tokenizer.java
// public static class QuotedString implements Serializable {
// 	private static final long serialVersionUID = 8125107374281852751L;
// 	public final String value;
// 
// 	public QuotedString(final String value) {
// 		this.value = value;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "\"" + value + "\"";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((value == null) ? 0 : value.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (!(obj instanceof QuotedString))
// 			return false;
// 		final QuotedString other = (QuotedString) obj;
// 		if (value == null) {
// 			if (other.value != null)
// 				return false;
// 		} else if (!value.equals(other.value))
// 			return false;
// 		return true;
// 	}
// }
// 
// Path: src/main/java/com/lastcalc/cache/ObjectCache.java
// public class ObjectCache {
// 	private static final Logger log = Logger.getLogger(ObjectCache.class.getName());
// 
// 	static Map<Integer, CachedObject> softMap = new MapMaker().softValues().makeMap();
// 
// 	public static <T> T getFast(final long oldestAllowed, final Object... key) {
// 		return getFastWithHash(oldestAllowed, Arrays.hashCode(key));
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	private static <T> T getFastWithHash(final long oldestAllowed, final int hash) {
// 		final CachedObject co = softMap.get(hash);
// 		if (co == null)
// 			return null;
// 		if (System.currentTimeMillis() - oldestAllowed > co.cacheTime)
// 			return (T) co.object;
// 		else
// 			return null;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public static <T> T getSlow(final long oldestAllowed, final Object... key) {
// 		final int keyHash = Arrays.hashCode(key);
// 		final T o = getFastWithHash(oldestAllowed, keyHash);
// 		if (o != null) {
// 			log.info("Got from local RAM");
// 			return o;
// 		}
// 		else {
// 			CacheFactory cacheFactory;
// 			try {
// 				cacheFactory = CacheManager.getInstance().getCacheFactory();
// 				final Cache memcache = cacheFactory.createCache(Collections.emptyMap());
// 				final CachedObject co = (CachedObject) memcache.get(keyHash);
// 				if (co != null) {
// 					log.info("Got from memcache");
// 					return (T) co.object;
// 				}
// 				else
// 					return null;
// 			} catch (final CacheException e) {
// 				log.warning("Exception retrieving object from cache: " + e);
// 				return null;
// 			}
// 		}
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public static void put(final long expirationDelta, final Object value, final Object... key) {
// 		final int keyHash = Arrays.hashCode(key);
// 		final CachedObject co = new CachedObject(value);
// 		softMap.put(keyHash, co);
// 		CacheFactory cacheFactory;
// 		try {
// 			cacheFactory = CacheManager.getInstance().getCacheFactory();
// 			final Map<Object, Object> props = Maps.newHashMap();
// 			props.put(GCacheFactory.EXPIRATION_DELTA, 3600);
// 			final Cache memcache = cacheFactory.createCache(props);
// 			memcache.put(keyHash, co);
// 		} catch (final CacheException e) {
// 			log.warning("Exception retrieving object from cache: " + e);
// 		}
// 	}
// 
// 	public static class CachedObject implements Serializable {
// 		/**
// 		 * 
// 		 */
// 		private static final long serialVersionUID = 2851269118906160513L;
// 
// 		public final long cacheTime;
// 
// 		public final Object object;
// 
// 		public CachedObject(final Object object) {
// 			this.object = object;
// 			cacheTime = System.currentTimeMillis();
// 		}
// 	}
// }


import java.io.*;
import java.net.*;
import java.util.Collection;
import com.lastcalc.*;
import com.lastcalc.Tokenizer.QuotedString;
import com.lastcalc.cache.ObjectCache;
import com.lastcalc.parsers.*;
package com.lastcalc.parsers.meta;



public class ImportParser extends Parser {

	private static TokenList template = TokenList.createD("import", QuotedString.class);

	@Override
	public TokenList getTemplate() {
		return template;
	}
	@Override
	public ParseResult parse(final TokenList tokens, final int templatePos, final ParserContext context) {
		if (context.importDepth > 5)
			return ParseResult.fail();
		URL url;
		try {
// Path: src/main/java/com/lastcalc/Tokenizer.java
// public static class QuotedString implements Serializable {
// 	private static final long serialVersionUID = 8125107374281852751L;
// 	public final String value;
// 
// 	public QuotedString(final String value) {
// 		this.value = value;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "\"" + value + "\"";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((value == null) ? 0 : value.hashCode());
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(final Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (!(obj instanceof QuotedString))
// 			return false;
// 		final QuotedString other = (QuotedString) obj;
// 		if (value == null) {
// 			if (other.value != null)
// 				return false;
// 		} else if (!value.equals(other.value))
// 			return false;
// 		return true;
// 	}
// }
// 
// Path: src/main/java/com/lastcalc/cache/ObjectCache.java
// public class ObjectCache {
// 	private static final Logger log = Logger.getLogger(ObjectCache.class.getName());
// 
// 	static Map<Integer, CachedObject> softMap = new MapMaker().softValues().makeMap();
// 
// 	public static <T> T getFast(final long oldestAllowed, final Object... key) {
// 		return getFastWithHash(oldestAllowed, Arrays.hashCode(key));
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	private static <T> T getFastWithHash(final long oldestAllowed, final int hash) {
// 		final CachedObject co = softMap.get(hash);
// 		if (co == null)
// 			return null;
// 		if (System.currentTimeMillis() - oldestAllowed > co.cacheTime)
// 			return (T) co.object;
// 		else
// 			return null;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public static <T> T getSlow(final long oldestAllowed, final Object... key) {
// 		final int keyHash = Arrays.hashCode(key);
// 		final T o = getFastWithHash(oldestAllowed, keyHash);
// 		if (o != null) {
// 			log.info("Got from local RAM");
// 			return o;
// 		}
// 		else {
// 			CacheFactory cacheFactory;
// 			try {
// 				cacheFactory = CacheManager.getInstance().getCacheFactory();
// 				final Cache memcache = cacheFactory.createCache(Collections.emptyMap());
// 				final CachedObject co = (CachedObject) memcache.get(keyHash);
// 				if (co != null) {
// 					log.info("Got from memcache");
// 					return (T) co.object;
// 				}
// 				else
// 					return null;
// 			} catch (final CacheException e) {
// 				log.warning("Exception retrieving object from cache: " + e);
// 				return null;
// 			}
// 		}
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public static void put(final long expirationDelta, final Object value, final Object... key) {
// 		final int keyHash = Arrays.hashCode(key);
// 		final CachedObject co = new CachedObject(value);
// 		softMap.put(keyHash, co);
// 		CacheFactory cacheFactory;
// 		try {
// 			cacheFactory = CacheManager.getInstance().getCacheFactory();
// 			final Map<Object, Object> props = Maps.newHashMap();
// 			props.put(GCacheFactory.EXPIRATION_DELTA, 3600);
// 			final Cache memcache = cacheFactory.createCache(props);
// 			memcache.put(keyHash, co);
// 		} catch (final CacheException e) {
// 			log.warning("Exception retrieving object from cache: " + e);
// 		}
// 	}
// 
// 	public static class CachedObject implements Serializable {
// 		/**
// 		 * 
// 		 */
// 		private static final long serialVersionUID = 2851269118906160513L;
// 
// 		public final long cacheTime;
// 
// 		public final Object object;
// 
// 		public CachedObject(final Object object) {
// 			this.object = object;
// 			cacheTime = System.currentTimeMillis();
// 		}
// 	}
// }


// Path: src/main/java/com/lastcalc/parsers/meta/ImportParser.java
import java.io.*;
import java.net.*;
import java.util.Collection;
import com.lastcalc.*;
import com.lastcalc.Tokenizer.QuotedString;
import com.lastcalc.cache.ObjectCache;
import com.lastcalc.parsers.*;

package com.lastcalc.parsers.meta;



public class ImportParser extends Parser {

	private static TokenList template = TokenList.createD("import", QuotedString.class);

	@Override
	public TokenList getTemplate() {
		return template;
	}
	@Override
	public ParseResult parse(final TokenList tokens, final int templatePos, final ParserContext context) {
		if (context.importDepth > 5)
			return ParseResult.fail();
		URL url;
		try {
			url = new URL(((QuotedString) tokens.get(templatePos + 1)).value);