text:
#region Header
// --------------------------------------------------------------------------
// OBD Tools
// ==========================================================================
//
// OBD via Bluetooth application for Windows Phone 8.0 and later.
//
// ==========================================================================
// <copyright file="MainPage.xaml.cs" company="Tethys">
// Copyright  2014 by Thomas Graf
//            All rights reserved.
//            Licensed under the Apache License, Version 2.0.
//            Unless required by applicable law or agreed to in writing,
//            software distributed under the License is distributed on an
//            "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
//            either express or implied.
// </copyright>
//
// System ... Windows Phone
// Tools .... Microsoft Visual Studio 2013
//
// ---------------------------------------------------------------------------
#endregion

namespace Tethys.OBD.ObdAnalyzer.Views
{
    using System;

    using Microsoft.Phone.Controls;

    using Tethys.OBD.ObdAnalyzer.ViewModels;

    // Required capabilities: ID_CAP_PROXIMITY, ID_CAP_NETWORKING

    /// <summary>
    /// Main page of the application.
    /// </summary>
    public partial class MainPage
    {
        #region CONSTRUCTION
        /// <summary>
        /// Initializes a new instance of the <see cref="MainPage"/> class.
        /// </summary>
        public MainPage()
        {
            this.InitializeComponent();
            this.DataContext = App.ViewModel;
            this.OrientationChanged += this.OnOrientationChanged;
        } // MainPage()
        #endregion // CONSTRUCTION

        //// ---------------------------------------------------------------------

        #region UI HANDLING METHODS
        /// <summary>
        /// Called when the orientation has changed.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The
        ///  <see cref="Microsoft.Phone.Controls.OrientationChangedEventArgs"/>
        /// instance containing the event data.</param>
        private void OnOrientationChanged(object sender, OrientationChangedEventArgs e)
        {
            if (((e.Orientation == PageOrientation.LandscapeLeft)
              || (e.Orientation == PageOrientation.LandscapeRight))
                && (this.MainPivot.SelectedIndex == MainViewModel.PivotIndexDashboard))
            {
                this.NavigationService.Navigate(new Uri("/Views/LandscapePage.xaml",
                    UriKind.Relative));
            } // if
        } // OnOrientationChanged()
        #endregion // UI HANDLING METHODS
    } // MainPage
} // Tethys.OBD.ObdAnalyzer.Views


text:
// Generated from java-escape by ANTLR 4.11.1

package oap.jpath;

import java.util.List;
import java.lang.Number;
import java.util.ArrayList;
import oap.util.Pair;
import static oap.util.Pair.__;

import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
public class JPathParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.11.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, Identifier=9,
		DecimalIntegerLiteral=10, StringLiteral=11, SPACE=12;
	public static final int
		RULE_expr = 0, RULE_path = 1, RULE_variableDeclaratorId = 2, RULE_array = 3,
		RULE_method = 4, RULE_methodParameters = 5, RULE_methodParameter = 6,
		RULE_identifier = 7;
	private static String[] makeRuleNames() {
		return new String[] {
			"expr", "path", "variableDeclaratorId", "array", "method", "methodParameters",
			"methodParameter", "identifier"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'${'", "'.'", "'}'", "'['", "']'", "'('", "')'", "','"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, null, null, null, null, null, null, null, null, "Identifier", "DecimalIntegerLiteral",
			"StringLiteral", "SPACE"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "<INVALID>";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "java-escape"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public JPathParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ExprContext extends ParserRuleContext {
		public Expression expression;
		public VariableDeclaratorIdContext f;
		public PathContext n;
		public VariableDeclaratorIdContext variableDeclaratorId() {
			return getRuleContext(VariableDeclaratorIdContext.class,0);
		}
		public List<PathContext> path() {
			return getRuleContexts(PathContext.class);
		}
		public PathContext path(int i) {
			return getRuleContext(PathContext.class,i);
		}
		public ExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expr; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterExpr(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitExpr(this);
		}
	}

	public final ExprContext expr() throws RecognitionException {
		ExprContext _localctx = new ExprContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_expr);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(16);
			match(T__0);
			((ExprContext)_localctx).expression =  new Expression(IdentifierType.VARIABLE);
			setState(18);
			((ExprContext)_localctx).f = variableDeclaratorId();
			_localctx.expression.path.add(new PathNodeField((((ExprContext)_localctx).f!=null?_input.getText(((ExprContext)_localctx).f.start,((ExprContext)_localctx).f.stop):null)));
			setState(26);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==T__1) {
				{
				{
				setState(20);
				match(T__1);
				setState(21);
				((ExprContext)_localctx).n = path();
				_localctx.expression.path.add(((ExprContext)_localctx).n.pathNode);
				}
				}
				setState(28);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(29);
			match(T__2);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class PathContext extends ParserRuleContext {
		public AbstractPathNode pathNode;
		public VariableDeclaratorIdContext v;
		public MethodContext m;
		public ArrayContext a;
		public VariableDeclaratorIdContext variableDeclaratorId() {
			return getRuleContext(VariableDeclaratorIdContext.class,0);
		}
		public MethodContext method() {
			return getRuleContext(MethodContext.class,0);
		}
		public ArrayContext array() {
			return getRuleContext(ArrayContext.class,0);
		}
		public PathContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_path; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterPath(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitPath(this);
		}
	}

	public final PathContext path() throws RecognitionException {
		PathContext _localctx = new PathContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_path);
		try {
			setState(40);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(31);
				((PathContext)_localctx).v = variableDeclaratorId();
				((PathContext)_localctx).pathNode =  new PathNodeField((((PathContext)_localctx).v!=null?_input.getText(((PathContext)_localctx).v.start,((PathContext)_localctx).v.stop):null));
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(34);
				((PathContext)_localctx).m = method();
				((PathContext)_localctx).pathNode =  new PathNodeMethod(((PathContext)_localctx).m.nameWithParams._1, ((PathContext)_localctx).m.nameWithParams._2);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(37);
				((PathContext)_localctx).a = array();
				((PathContext)_localctx).pathNode =  new PathNodeArray(((PathContext)_localctx).a.arrayValue._1, ((PathContext)_localctx).a.arrayValue._2);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VariableDeclaratorIdContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public VariableDeclaratorIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_variableDeclaratorId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterVariableDeclaratorId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitVariableDeclaratorId(this);
		}
	}

	public final VariableDeclaratorIdContext variableDeclaratorId() throws RecognitionException {
		VariableDeclaratorIdContext _localctx = new VariableDeclaratorIdContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_variableDeclaratorId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(42);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ArrayContext extends ParserRuleContext {
		public Pair<String,Integer> arrayValue;
		public IdentifierContext i;
		public Token n;
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode DecimalIntegerLiteral() { return getToken(JPathParser.DecimalIntegerLiteral, 0); }
		public ArrayContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_array; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterArray(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitArray(this);
		}
	}

	public final ArrayContext array() throws RecognitionException {
		ArrayContext _localctx = new ArrayContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_array);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(44);
			((ArrayContext)_localctx).i = identifier();
			setState(45);
			match(T__3);
			setState(46);
			((ArrayContext)_localctx).n = match(DecimalIntegerLiteral);
			setState(47);
			match(T__4);
			((ArrayContext)_localctx).arrayValue =  __((((ArrayContext)_localctx).i!=null?_input.getText(((ArrayContext)_localctx).i.start,((ArrayContext)_localctx).i.stop):null), Integer.parseInt((((ArrayContext)_localctx).n!=null?((ArrayContext)_localctx).n.getText():null)));
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodContext extends ParserRuleContext {
		public Pair<String,List<Object>> nameWithParams;
		public IdentifierContext i;
		public MethodParametersContext p;
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public MethodParametersContext methodParameters() {
			return getRuleContext(MethodParametersContext.class,0);
		}
		public MethodContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_method; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterMethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitMethod(this);
		}
	}

	public final MethodContext method() throws RecognitionException {
		MethodContext _localctx = new MethodContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_method);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(50);
			((MethodContext)_localctx).i = identifier();
			setState(51);
			match(T__5);
			setState(52);
			((MethodContext)_localctx).p = methodParameters();
			setState(53);
			match(T__6);
			((MethodContext)_localctx).nameWithParams =  __((((MethodContext)_localctx).i!=null?_input.getText(((MethodContext)_localctx).i.start,((MethodContext)_localctx).i.stop):null), ((MethodContext)_localctx).p.arguments);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodParametersContext extends ParserRuleContext {
		public List<Object> arguments = new ArrayList<Object>();
		public MethodParameterContext mp;
		public MethodParameterContext mp2;
		public List<MethodParameterContext> methodParameter() {
			return getRuleContexts(MethodParameterContext.class);
		}
		public MethodParameterContext methodParameter(int i) {
			return getRuleContext(MethodParameterContext.class,i);
		}
		public MethodParametersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_methodParameters; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterMethodParameters(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitMethodParameters(this);
		}
	}

	public final MethodParametersContext methodParameters() throws RecognitionException {
		MethodParametersContext _localctx = new MethodParametersContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_methodParameters);
		int _la;
		try {
			setState(68);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case T__6:
				enterOuterAlt(_localctx, 1);
				{
				}
				break;
			case DecimalIntegerLiteral:
			case StringLiteral:
				enterOuterAlt(_localctx, 2);
				{
				setState(57);
				((MethodParametersContext)_localctx).mp = methodParameter();
				_localctx.arguments.add(((MethodParametersContext)_localctx).mp.argument);
				setState(65);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==T__7) {
					{
					{
					setState(59);
					match(T__7);
					setState(60);
					((MethodParametersContext)_localctx).mp2 = methodParameter();
					_localctx.arguments.add(((MethodParametersContext)_localctx).mp2.argument);
					}
					}
					setState(67);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class MethodParameterContext extends ParserRuleContext {
		public Object argument;
		public Token s;
		public Token di;
		public TerminalNode StringLiteral() { return getToken(JPathParser.StringLiteral, 0); }
		public TerminalNode DecimalIntegerLiteral() { return getToken(JPathParser.DecimalIntegerLiteral, 0); }
		public MethodParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_methodParameter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterMethodParameter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitMethodParameter(this);
		}
	}

	public final MethodParameterContext methodParameter() throws RecognitionException {
		MethodParameterContext _localctx = new MethodParameterContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_methodParameter);
		try {
			setState(74);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case StringLiteral:
				enterOuterAlt(_localctx, 1);
				{
				setState(70);
				((MethodParameterContext)_localctx).s = match(StringLiteral);
				((MethodParameterContext)_localctx).argument =  (((MethodParameterContext)_localctx).s!=null?((MethodParameterContext)_localctx).s.getText():null);
				}
				break;
			case DecimalIntegerLiteral:
				enterOuterAlt(_localctx, 2);
				{
				setState(72);
				((MethodParameterContext)_localctx).di = match(DecimalIntegerLiteral);
				((MethodParameterContext)_localctx).argument =  Long.parseLong((((MethodParameterContext)_localctx).di!=null?((MethodParameterContext)_localctx).di.getText():null));
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class IdentifierContext extends ParserRuleContext {
		public TerminalNode Identifier() { return getToken(JPathParser.Identifier, 0); }
		public IdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifier; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).enterIdentifier(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof JPathListener ) ((JPathListener)listener).exitIdentifier(this);
		}
	}

	public final IdentifierContext identifier() throws RecognitionException {
		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_identifier);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(76);
			match(Identifier);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static final String _serializedATN =
		"\u0004\u0001\fO\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
		"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
		"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0005\u0000\u0019\b\u0000\n\u0000\f\u0000\u001c\t\u0000"+
		"\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001"+
		")\b\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003"+
		"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004"+
		"\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0005\u0005@\b\u0005"+
		"\n\u0005\f\u0005C\t\u0005\u0003\u0005E\b\u0005\u0001\u0006\u0001\u0006"+
		"\u0001\u0006\u0001\u0006\u0003\u0006K\b\u0006\u0001\u0007\u0001\u0007"+
		"\u0001\u0007\u0000\u0000\b\u0000\u0002\u0004\u0006\b\n\f\u000e\u0000\u0000"+
		"L\u0000\u0010\u0001\u0000\u0000\u0000\u0002(\u0001\u0000\u0000\u0000\u0004"+
		"*\u0001\u0000\u0000\u0000\u0006,\u0001\u0000\u0000\u0000\b2\u0001\u0000"+
		"\u0000\u0000\nD\u0001\u0000\u0000\u0000\fJ\u0001\u0000\u0000\u0000\u000e"+
		"L\u0001\u0000\u0000\u0000\u0010\u0011\u0005\u0001\u0000\u0000\u0011\u0012"+
		"\u0006\u0000\uffff\uffff\u0000\u0012\u0013\u0003\u0004\u0002\u0000\u0013"+
		"\u001a\u0006\u0000\uffff\uffff\u0000\u0014\u0015\u0005\u0002\u0000\u0000"+
		"\u0015\u0016\u0003\u0002\u0001\u0000\u0016\u0017\u0006\u0000\uffff\uffff"+
		"\u0000\u0017\u0019\u0001\u0000\u0000\u0000\u0018\u0014\u0001\u0000\u0000"+
		"\u0000\u0019\u001c\u0001\u0000\u0000\u0000\u001a\u0018\u0001\u0000\u0000"+
		"\u0000\u001a\u001b\u0001\u0000\u0000\u0000\u001b\u001d\u0001\u0000\u0000"+
		"\u0000\u001c\u001a\u0001\u0000\u0000\u0000\u001d\u001e\u0005\u0003\u0000"+
		"\u0000\u001e\u0001\u0001\u0000\u0000\u0000\u001f \u0003\u0004\u0002\u0000"+
		" !\u0006\u0001\uffff\uffff\u0000!)\u0001\u0000\u0000\u0000\"#\u0003\b"+
		"\u0004\u0000#$\u0006\u0001\uffff\uffff\u0000$)\u0001\u0000\u0000\u0000"+
		"%&\u0003\u0006\u0003\u0000&\'\u0006\u0001\uffff\uffff\u0000\')\u0001\u0000"+
		"\u0000\u0000(\u001f\u0001\u0000\u0000\u0000(\"\u0001\u0000\u0000\u0000"+
		"(%\u0001\u0000\u0000\u0000)\u0003\u0001\u0000\u0000\u0000*+\u0003\u000e"+
		"\u0007\u0000+\u0005\u0001\u0000\u0000\u0000,-\u0003\u000e\u0007\u0000"+
		"-.\u0005\u0004\u0000\u0000./\u0005\n\u0000\u0000/0\u0005\u0005\u0000\u0000"+
		"01\u0006\u0003\uffff\uffff\u00001\u0007\u0001\u0000\u0000\u000023\u0003"+
		"\u000e\u0007\u000034\u0005\u0006\u0000\u000045\u0003\n\u0005\u000056\u0005"+
		"\u0007\u0000\u000067\u0006\u0004\uffff\uffff\u00007\t\u0001\u0000\u0000"+
		"\u00008E\u0001\u0000\u0000\u00009:\u0003\f\u0006\u0000:A\u0006\u0005\uffff"+
		"\uffff\u0000;<\u0005\b\u0000\u0000<=\u0003\f\u0006\u0000=>\u0006\u0005"+
		"\uffff\uffff\u0000>@\u0001\u0000\u0000\u0000?;\u0001\u0000\u0000\u0000"+
		"@C\u0001\u0000\u0000\u0000A?\u0001\u0000\u0000\u0000AB\u0001\u0000\u0000"+
		"\u0000BE\u0001\u0000\u0000\u0000CA\u0001\u0000\u0000\u0000D8\u0001\u0000"+
		"\u0000\u0000D9\u0001\u0000\u0000\u0000E\u000b\u0001\u0000\u0000\u0000"+
		"FG\u0005\u000b\u0000\u0000GK\u0006\u0006\uffff\uffff\u0000HI\u0005\n\u0000"+
		"\u0000IK\u0006\u0006\uffff\uffff\u0000JF\u0001\u0000\u0000\u0000JH\u0001"+
		"\u0000\u0000\u0000K\r\u0001\u0000\u0000\u0000LM\u0005\t\u0000\u0000M\u000f"+
		"\u0001\u0000\u0000\u0000\u0005\u001a(ADJ";
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}

redpajama_set_name: RedPajamaGithub


text:
package jsettlers.common.utils;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * Class to cluster util functions concerning the main classes.
 *
 * @author Andreas Eberle
 *
 */
public final class MainUtils {
	private static final String OPTIONS_FILE_NAME = "options.prp";

	private MainUtils() {
	}

	public static OptionableProperties loadOptions(String[] args) {
		File optionsFile = new File(OPTIONS_FILE_NAME);
		OptionableProperties options = new OptionableProperties();
		if (optionsFile.exists()) {
			System.out.println("Found default command line options file. Starting to read.");
			try {
				options.load(new BufferedInputStream(new FileInputStream(optionsFile)));
				System.out.println("Default command line options file successfully read.");
			} catch (IOException e) {
				System.err.println("Failed to read default command line options file.");
				e.printStackTrace();
			}
		} else {
			System.out.println("No default command line options file found.");
		}

		options.loadArguments(args);
		System.out.println("Options loaded: " + options.toString());

		return options;
	}

}


text:
    <title>User agent detail - SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)</title>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.3/css/materialize.min.css">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

User agent detail

            SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)

	General	Device	Bot

Provider	Browser	Engine	OS	Brand	Model	Type	Is mobile	Is touch	Is bot	Name	Type	Parse time	Actions

Source result (test suite)

browscap/browscap
/tests/fixtures/issues/issue-077.php	 	 	 						yes	Google Bot Mobile	Bot/Crawler

Detail

Testsuite result detail

Array
(
    [Browser] => Google Bot Mobile
    [Browser_Type] => Bot/Crawler
    [Browser_Bits] => 32
    [Browser_Maker] => Google Inc
    [Version] => 2.1
    [MajorVer] => 2
    [MinorVer] => 1
    [Platform] => JAVA
    [Platform_Version] => unknown
    [Platform_Bits] => 32
    [Platform_Maker] => Oracle
    [isMobileDevice] => 1
    [isTablet] =>
    [Crawler] => 1
    [Device_Name] => SGH-E250
    [Device_Maker] => Samsung
    [Device_Type] => Mobile Phone
    [Device_Pointing_Method] => unknown
    [Device_Code_Name] => SGH-E250
    [Device_Brand_Name] => Samsung
    [RenderingEngine_Name] => unknown
    [RenderingEngine_Version] => unknown
    [RenderingEngine_Maker] => unknown
)

        close

Providers

BrowscapPhp
6012	 	 	 						yes	Google Bot Mobile	Bot/Crawler	0.008

Detail

BrowscapPhp result detail

stdClass Object
(
    [browser_name_regex] => /^samsung\-sgh\-e250\/.* up\.browser\/6\.2.* \(compatible; googlebot\-mobile\/2\.1.*$/
    [browser_name_pattern] => samsung-sgh-e250/* up.browser/6.2* (compatible; googlebot-mobile/2.1*
    [parent] => Googlebot-Mobile 2.1
    [comment] => Googlebot
    [browser] => Google Bot Mobile
    [browser_type] => Bot/Crawler
    [browser_bits] => 32
    [browser_maker] => Google Inc
    [browser_modus] => unknown
    [version] => 2.1
    [majorver] => 2
    [minorver] => 1
    [platform] => JAVA
    [platform_version] => unknown
    [platform_description] => unknown
    [platform_bits] => 32
    [platform_maker] => Oracle
    [alpha] =>
    [beta] =>
    [win16] =>
    [win32] =>
    [win64] =>
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] =>
    [backgroundsounds] =>
    [javascript] => 1
    [vbscript] =>
    [javaapplets] =>
    [activexcontrols] =>
    [ismobiledevice] => 1
    [istablet] =>
    [issyndicationreader] =>
    [crawler] => 1
    [cssversion] => 0
    [aolversion] => 0
    [device_name] => SGH-E250
    [device_maker] => Samsung
    [device_type] => Mobile Phone
    [device_pointing_method] => unknown
    [device_code_name] => SGH-E250
    [device_brand_name] => Samsung
    [renderingengine_name] => unknown
    [renderingengine_version] => unknown
    [renderingengine_description] => unknown
    [renderingengine_maker] => unknown
)

        close

DonatjUAParser
v0.5.0	SAMSUNG-SGH-E250 1.0	close	close	close	close	close	close	close	close	close	close	0

Detail

DonatjUAParser result detail

Array
(
    [platform] =>
    [browser] => SAMSUNG-SGH-E250
    [version] => 1.0
)

        close

NeutrinoApiCom
	 	close	 					close	yes	Googlebot-Mobile/2.1	close	0.19202

Detail

NeutrinoApiCom result detail

stdClass Object
(
    [mobile_screen_height] => 0
    [is_mobile] =>
    [type] => robot
    [mobile_brand] =>
    [mobile_model] =>
    [version] => 2.1
    [is_android] =>
    [browser_name] => Googlebot-Mobile/2.1
    [operating_system_family] => unknown
    [operating_system_version] =>
    [is_ios] =>
    [producer] => Google Inc.
    [operating_system] => unknown
    [mobile_screen_width] => 0
    [mobile_browser] =>
)

        close

PiwikDeviceDetector
3.5.2	 	 	 						yes	Googlebot	Search bot	0.003

Detail

PiwikDeviceDetector result detail

Array
(
    [client] =>
    [operatingSystem] =>
    [device] => Array
        (
            [brand] =>
            [brandName] =>
            [model] =>
            [device] =>
            [deviceName] =>
        )

    [bot] => Array
        (
            [name] => Googlebot
            [category] => Search bot
            [url] => http://www.google.com/bot.html
            [producer] => Array
                (
                    [name] => Google Inc.
                    [url] => http://www.google.com
                )

        )

    [extra] => Array
        (
            [isBot] => 1
            [isBrowser] =>
            [isFeedReader] =>
            [isMobileApp] =>
            [isPIM] =>
            [isLibrary] =>
            [isMediaPlayer] =>
            [isCamera] =>
            [isCarBrowser] =>
            [isConsole] =>
            [isFeaturePhone] =>
            [isPhablet] =>
            [isPortableMediaPlayer] =>
            [isSmartDisplay] =>
            [isSmartphone] =>
            [isTablet] =>
            [isTV] =>
            [isDesktop] =>
            [isMobile] =>
            [isTouchEnabled] =>
        )

)

        close

SinergiBrowserDetector
6.0.0	 	close	 	close		close		close	yes	close	close	0.001

Detail

SinergiBrowserDetector result detail

Array
(
    [browser] => Sinergi\BrowserDetector\Browser Object
        (
            [userAgent:Sinergi\BrowserDetector\Browser:private] => Sinergi\BrowserDetector\UserAgent Object
                (
                    [userAgentString:Sinergi\BrowserDetector\UserAgent:private] => SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
                )

            [name:Sinergi\BrowserDetector\Browser:private] => unknown
            [version:Sinergi\BrowserDetector\Browser:private] => unknown
            [isRobot:Sinergi\BrowserDetector\Browser:private] => 1
            [isChromeFrame:Sinergi\BrowserDetector\Browser:private] =>
        )

    [operatingSystem] => Sinergi\BrowserDetector\Os Object
        (
            [name:Sinergi\BrowserDetector\Os:private] => unknown
            [version:Sinergi\BrowserDetector\Os:private] => unknown
            [isMobile:Sinergi\BrowserDetector\Os:private] =>
            [userAgent:Sinergi\BrowserDetector\Os:private] => Sinergi\BrowserDetector\UserAgent Object
                (
                    [userAgentString:Sinergi\BrowserDetector\UserAgent:private] => SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
                )

        )

    [device] => Sinergi\BrowserDetector\Device Object
        (
            [name:Sinergi\BrowserDetector\Device:private] => unknown
            [userAgent:Sinergi\BrowserDetector\Device:private] => Sinergi\BrowserDetector\UserAgent Object
                (
                    [userAgentString:Sinergi\BrowserDetector\UserAgent:private] => SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
                )

        )

)

        close

UAParser
v3.4.5	 	close	 			close	close	close	yes	Googlebot-Mobile	close	0.002

Detail

UAParser result detail

UAParser\Result\Client Object
(
    [ua] => UAParser\Result\UserAgent Object
        (
            [major] => 2
            [minor] => 1
            [patch] =>
            [family] => Googlebot-Mobile
        )

    [os] => UAParser\Result\OperatingSystem Object
        (
            [major] =>
            [minor] =>
            [patch] =>
            [patchMinor] =>
            [family] => Other
        )

    [device] => UAParser\Result\Device Object
        (
            [brand] => Spider
            [model] => Feature Phone
            [family] => Spider
        )

    [originalUserAgent] => SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
)

        close

UserAgentStringCom
	 	close	 	close	close	close	close	close	yes	Googlebot	Crawler	0.049

Detail

UserAgentStringCom result detail

stdClass Object
(
    [agent_type] => Crawler
    [agent_name] => Googlebot
    [agent_version] => 2.1
    [os_type] => unknown
    [os_name] => unknown
    [os_versionName] =>
    [os_versionNumber] =>
    [os_producer] =>
    [os_producerURL] =>
    [linux_distibution] => Null
    [agent_language] =>
    [agent_languageTag] =>
)

        close

WhatIsMyBrowserCom
	Googlebot Mobile 2.1	 	 			close	close	close	close	close	close	0.41304

Detail

WhatIsMyBrowserCom result detail

stdClass Object
(
    [operating_system_name] =>
    [simple_sub_description_string] =>
    [simple_browser_string] => Googlebot Mobile 2.1
    [browser_version] => 2.1
    [extra_info] => Array
        (
        )

    [operating_platform] =>
    [extra_info_table] => Array
        (
        )

    [layout_engine_name] =>
    [detected_addons] => Array
        (
        )

    [operating_system_flavour_code] =>
    [hardware_architecture] =>
    [operating_system_flavour] =>
    [operating_system_frameworks] => Array
        (
        )

    [browser_name_code] => googlebot-mobile
    [operating_system_version] =>
    [simple_operating_platform_string] =>
    [is_abusive] =>
    [layout_engine_version] =>
    [browser_capabilities] => Array
        (
            [0] => MIDP v2.0
            [1] => CLDC v1.1
            [2] => MMP v2.0
        )

    [operating_platform_vendor_name] =>
    [operating_system] =>
    [operating_system_version_full] =>
    [operating_platform_code] =>
    [browser_name] => Googlebot Mobile
    [operating_system_name_code] =>
    [user_agent] => SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
    [browser_version_full] => 2.1
    [browser] => Googlebot Mobile 2.1
)

        close

WhichBrowser
2.0.10	 	 	 					close	yes	Googlebot Mobile	close	0.011

Detail

WhichBrowser result detail

Array
(
    [browser] => Array
        (
            [name] => Googlebot Mobile
            [version] => 2.1
        )

    [device] => Array
        (
            [type] => bot
        )

)

        close

Woothee
v1.2.0	 	close	close	close	close		close	close	yes	Googlebot Mobile	close	0

Detail

Woothee result detail

Array
(
    [name] => Googlebot Mobile
    [category] => crawler
    [os] => UNKNOWN
    [version] => UNKNOWN
    [vendor] => UNKNOWN
    [os_version] => UNKNOWN
)

        close

Wurfl
1.6.4	Java Applet 	close	 	Samsung	SGH E250i	Feature Phone	yes			close	close	0.016

Detail

Wurfl result detail

Array
(
    [virtual] => Array
        (
            [is_android] => false
            [is_ios] => false
            [is_windows_phone] => false
            [is_app] => true
            [is_full_desktop] => false
            [is_largescreen] => false
            [is_mobile] => true
            [is_robot] => 1
            [is_smartphone] => false
            [is_touchscreen] => false
            [is_wml_preferred] => false
            [is_xhtmlmp_preferred] => true
            [is_html_preferred] => false
            [advertised_device_os] =>
            [advertised_device_os_version] =>
            [advertised_browser] => Java Applet
            [advertised_browser_version] =>
            [complete_device_name] => Samsung SGH E250i
            [form_factor] => Feature Phone
            [is_phone] => true
            [is_app_webview] => false
        )

    [all] => Array
        (
            [brand_name] => Samsung
            [model_name] => SGH E250i
            [unique] => true
            [ununiqueness_handler] =>
            [is_wireless_device] => true
            [device_claims_web_support] => false
            [has_qwerty_keyboard] => false
            [can_skip_aligned_link_row] => false
            [uaprof] => http://wap.samsungmobile.com/uaprof/SGH-E250i.xml
            [uaprof2] => http://wap.samsungmobile.com/uaprof/SGH-E250-ORANGE.xml
            [uaprof3] =>
            [nokia_series] => 0
            [nokia_edition] => 0
            [device_os] =>
            [mobile_browser] => Openwave Mobile Browser
            [mobile_browser_version] => 6.2
            [device_os_version] =>
            [pointing_method] =>
            [release_date] => 2009_may
            [marketing_name] =>
            [model_extra_info] => Google Bot
            [nokia_feature_pack] => 0
            [can_assign_phone_number] => true
            [is_tablet] => false
            [manufacturer_name] =>
            [is_bot] => true
            [is_google_glass] => false
            [proportional_font] => true
            [built_in_back_button_support] => true
            [card_title_support] => false
            [softkey_support] => true
            [table_support] => true
            [numbered_menus] => true
            [menu_with_select_element_recommended] => true
            [menu_with_list_of_links_recommended] => false
            [icons_on_menu_items_support] => true
            [break_list_of_links_with_br_element_recommended] => false
            [access_key_support] => true
            [wrap_mode_support] => true
            [times_square_mode_support] => true
            [deck_prefetch_support] => true
            [elective_forms_recommended] => false
            [wizards_recommended] => true
            [image_as_link_support] => false
            [insert_br_element_after_widget_recommended] => false
            [wml_can_display_images_and_text_on_same_line] => false
            [wml_displays_image_in_center] => false
            [opwv_wml_extensions_support] => true
            [wml_make_phone_call_string] => wtai://wp/mc;
            [chtml_display_accesskey] => false
            [emoji] => false
            [chtml_can_display_images_and_text_on_same_line] => false
            [chtml_displays_image_in_center] => false
            [imode_region] => none
            [chtml_make_phone_call_string] => tel:
            [chtml_table_support] => false
            [xhtml_honors_bgcolor] => false
            [xhtml_supports_forms_in_table] => false
            [xhtml_support_wml2_namespace] => false
            [xhtml_autoexpand_select] => true
            [xhtml_select_as_dropdown] => false
            [xhtml_select_as_radiobutton] => false
            [xhtml_select_as_popup] => false
            [xhtml_display_accesskey] => false
            [xhtml_supports_invisible_text] => true
            [xhtml_supports_inline_input] => true
            [xhtml_supports_monospace_font] => true
            [xhtml_supports_table_for_layout] => true
            [xhtml_supports_css_cell_table_coloring] => true
            [xhtml_format_as_css_property] => true
            [xhtml_format_as_attribute] => true
            [xhtml_nowrap_mode] => true
            [xhtml_marquee_as_css_property] => true
            [xhtml_readable_background_color1] => #99CCFF
            [xhtml_readable_background_color2] => #FFFFFF
            [xhtml_allows_disabled_form_elements] => true
            [xhtml_document_title_support] => true
            [xhtml_preferred_charset] => iso8859
            [opwv_xhtml_extensions_support] => true
            [xhtml_make_phone_call_string] => wtai://wp/mc;
            [xhtmlmp_preferred_mime_type] => application/vnd.wap.xhtml+xml
            [xhtml_table_support] => true
            [xhtml_send_sms_string] => none
            [xhtml_send_mms_string] => none
            [xhtml_file_upload] => supported
            [cookie_support] => true
            [accept_third_party_cookie] => false
            [xhtml_supports_iframe] => none
            [xhtml_avoid_accesskeys] => false
            [xhtml_can_embed_video] => none
            [ajax_support_javascript] => false
            [ajax_manipulate_css] => false
            [ajax_support_getelementbyid] => false
            [ajax_support_inner_html] => false
            [ajax_xhr_type] => none
            [ajax_manipulate_dom] => false
            [ajax_support_events] => false
            [ajax_support_event_listener] => false
            [ajax_preferred_geoloc_api] => none
            [xhtml_support_level] => 3
            [preferred_markup] => html_wi_oma_xhtmlmp_1_0
            [wml_1_1] => true
            [wml_1_2] => true
            [wml_1_3] => true
            [html_wi_w3_xhtmlbasic] => true
            [html_wi_oma_xhtmlmp_1_0] => true
            [html_wi_imode_html_1] => true
            [html_wi_imode_html_2] => true
            [html_wi_imode_html_3] => true
            [html_wi_imode_html_4] => false
            [html_wi_imode_html_5] => false
            [html_wi_imode_htmlx_1] => true
            [html_wi_imode_htmlx_1_1] => false
            [html_wi_imode_compact_generic] => true
            [html_web_3_2] => false
            [html_web_4_0] => false
            [voicexml] => false
            [multipart_support] => true
            [total_cache_disable_support] => false
            [time_to_live_support] => true
            [resolution_width] => 128
            [resolution_height] => 160
            [columns] => 8
            [max_image_width] => 120
            [max_image_height] => 130
            [rows] => 14
            [physical_screen_width] => 32
            [physical_screen_height] => 40
            [dual_orientation] => false
            [density_class] => 1.0
            [wbmp] => true
            [bmp] => true
            [epoc_bmp] => false
            [gif_animated] => true
            [jpg] => true
            [png] => true
            [tiff] => false
            [transparent_png_alpha] => false
            [transparent_png_index] => false
            [svgt_1_1] => false
            [svgt_1_1_plus] => false
            [greyscale] => false
            [gif] => true
            [colors] => 65536
            [webp_lossy_support] => false
            [webp_lossless_support] => false
            [post_method_support] => true
            [basic_authentication_support] => true
            [empty_option_value_support] => false
            [emptyok] => false
            [nokia_voice_call] => false
            [wta_voice_call] => true
            [wta_phonebook] => false
            [wta_misc] => false
            [wta_pdc] => false
            [https_support] => true
            [phone_id_provided] => false
            [max_data_rate] => 200
            [wifi] => false
            [sdio] => false
            [vpn] => false
            [has_cellular_radio] => true
            [max_deck_size] => 49152
            [max_url_length_in_requests] => 256
            [max_url_length_homepage] => 0
            [max_url_length_bookmark] => 0
            [max_url_length_cached_page] => 0
            [max_no_of_connection_settings] => 0
            [max_no_of_bookmarks] => 0
            [max_length_of_username] => 0
            [max_length_of_password] => 0
            [max_object_size] => 0
            [downloadfun_support] => false
            [directdownload_support] => true
            [inline_support] => false
            [oma_support] => true
            [ringtone] => true
            [ringtone_3gpp] => false
            [ringtone_midi_monophonic] => true
            [ringtone_midi_polyphonic] => true
            [ringtone_imelody] => false
            [ringtone_digiplug] => false
            [ringtone_compactmidi] => false
            [ringtone_mmf] => false
            [ringtone_rmf] => false
            [ringtone_xmf] => false
            [ringtone_amr] => false
            [ringtone_awb] => false
            [ringtone_aac] => false
            [ringtone_wav] => false
            [ringtone_mp3] => true
            [ringtone_spmidi] => false
            [ringtone_qcelp] => false
            [ringtone_voices] => 64
            [ringtone_df_size_limit] => 0
            [ringtone_directdownload_size_limit] => 0
            [ringtone_inline_size_limit] => 0
            [ringtone_oma_size_limit] => 0
            [wallpaper] => true
            [wallpaper_max_width] => 128
            [wallpaper_max_height] => 128
            [wallpaper_preferred_width] => 128
            [wallpaper_preferred_height] => 160
            [wallpaper_resize] => none
            [wallpaper_wbmp] => false
            [wallpaper_bmp] => false
            [wallpaper_gif] => true
            [wallpaper_jpg] => true
            [wallpaper_png] => false
            [wallpaper_tiff] => false
            [wallpaper_greyscale] => false
            [wallpaper_colors] => 16
            [wallpaper_df_size_limit] => 0
            [wallpaper_directdownload_size_limit] => 0
            [wallpaper_inline_size_limit] => 0
            [wallpaper_oma_size_limit] => 0
            [screensaver] => true
            [screensaver_max_width] => 0
            [screensaver_max_height] => 0
            [screensaver_preferred_width] => 0
            [screensaver_preferred_height] => 0
            [screensaver_resize] => none
            [screensaver_wbmp] => false
            [screensaver_bmp] => false
            [screensaver_gif] => true
            [screensaver_jpg] => false
            [screensaver_png] => false
            [screensaver_greyscale] => false
            [screensaver_colors] => 2
            [screensaver_df_size_limit] => 0
            [screensaver_directdownload_size_limit] => 0
            [screensaver_inline_size_limit] => 0
            [screensaver_oma_size_limit] => 0
            [picture] => false
            [picture_max_width] => 0
            [picture_max_height] => 0
            [picture_preferred_width] => 0
            [picture_preferred_height] => 0
            [picture_resize] => none
            [picture_wbmp] => false
            [picture_bmp] => false
            [picture_gif] => false
            [picture_jpg] => false
            [picture_png] => false
            [picture_greyscale] => false
            [picture_colors] => 2
            [picture_df_size_limit] => 0
            [picture_directdownload_size_limit] => 0
            [picture_inline_size_limit] => 0
            [picture_oma_size_limit] => 0
            [video] => true
            [oma_v_1_0_forwardlock] => true
            [oma_v_1_0_combined_delivery] => true
            [oma_v_1_0_separate_delivery] => true
            [streaming_video] => false
            [streaming_3gpp] => false
            [streaming_mp4] => false
            [streaming_mov] => false
            [streaming_video_size_limit] => 0
            [streaming_real_media] => none
            [streaming_flv] => false
            [streaming_3g2] => false
            [streaming_vcodec_h263_0] => -1
            [streaming_vcodec_h263_3] => -1
            [streaming_vcodec_mpeg4_sp] => -1
            [streaming_vcodec_mpeg4_asp] => -1
            [streaming_vcodec_h264_bp] => -1
            [streaming_acodec_amr] => none
            [streaming_acodec_aac] => none
            [streaming_wmv] => none
            [streaming_preferred_protocol] => rtsp
            [streaming_preferred_http_protocol] => none
            [wap_push_support] => true
            [connectionless_service_indication] => true
            [connectionless_service_load] => false
            [connectionless_cache_operation] => true
            [connectionoriented_unconfirmed_service_indication] => true
            [connectionoriented_unconfirmed_service_load] => true
            [connectionoriented_unconfirmed_cache_operation] => true
            [connectionoriented_confirmed_service_indication] => true
            [connectionoriented_confirmed_service_load] => true
            [connectionoriented_confirmed_cache_operation] => true
            [utf8_support] => true
            [ascii_support] => false
            [iso8859_support] => false
            [expiration_date] => true
            [j2me_cldc_1_0] => true
            [j2me_cldc_1_1] => true
            [j2me_midp_1_0] => true
            [j2me_midp_2_0] => true
            [doja_1_0] => false
            [doja_1_5] => false
            [doja_2_0] => false
            [doja_2_1] => false
            [doja_2_2] => false
            [doja_3_0] => false
            [doja_3_5] => false
            [doja_4_0] => false
            [j2me_jtwi] => false
            [j2me_mmapi_1_0] => false
            [j2me_mmapi_1_1] => false
            [j2me_wmapi_1_0] => false
            [j2me_wmapi_1_1] => false
            [j2me_wmapi_2_0] => false
            [j2me_btapi] => false
            [j2me_3dapi] => false
            [j2me_locapi] => false
            [j2me_nokia_ui] => false
            [j2me_motorola_lwt] => false
            [j2me_siemens_color_game] => false
            [j2me_siemens_extension] => false
            [j2me_heap_size] => 0
            [j2me_max_jar_size] => 200000
            [j2me_storage_size] => 0
            [j2me_max_record_store_size] => 0
            [j2me_screen_width] => 128
            [j2me_screen_height] => 160
            [j2me_canvas_width] => 0
            [j2me_canvas_height] => 0
            [j2me_bits_per_pixel] => 0
            [j2me_audio_capture_enabled] => false
            [j2me_video_capture_enabled] => false
            [j2me_photo_capture_enabled] => false
            [j2me_capture_image_formats] => none
            [j2me_http] => false
            [j2me_https] => false
            [j2me_socket] => false
            [j2me_udp] => false
            [j2me_serial] => false
            [j2me_gif] => false
            [j2me_gif89a] => false
            [j2me_jpg] => false
            [j2me_png] => false
            [j2me_bmp] => false
            [j2me_bmp3] => false
            [j2me_wbmp] => false
            [j2me_midi] => false
            [j2me_wav] => false
            [j2me_amr] => false
            [j2me_mp3] => false
            [j2me_mp4] => false
            [j2me_imelody] => false
            [j2me_rmf] => false
            [j2me_au] => false
            [j2me_aac] => false
            [j2me_realaudio] => false
            [j2me_xmf] => false
            [j2me_wma] => false
            [j2me_3gpp] => false
            [j2me_h263] => false
            [j2me_svgt] => false
            [j2me_mpeg4] => false
            [j2me_realvideo] => false
            [j2me_real8] => false
            [j2me_realmedia] => false
            [j2me_left_softkey_code] => 0
            [j2me_right_softkey_code] => 0
            [j2me_middle_softkey_code] => 0
            [j2me_select_key_code] => 0
            [j2me_return_key_code] => 0
            [j2me_clear_key_code] => 0
            [j2me_datefield_no_accepts_null_date] => false
            [j2me_datefield_broken] => false
            [receiver] => true
            [sender] => true
            [mms_max_size] => 307200
            [mms_max_height] => 480
            [mms_max_width] => 640
            [built_in_recorder] => false
            [built_in_camera] => false
            [mms_jpeg_baseline] => true
            [mms_jpeg_progressive] => true
            [mms_gif_static] => true
            [mms_gif_animated] => false
            [mms_png] => true
            [mms_bmp] => true
            [mms_wbmp] => true
            [mms_amr] => true
            [mms_wav] => true
            [mms_midi_monophonic] => true
            [mms_midi_polyphonic] => true
            [mms_midi_polyphonic_voices] => 0
            [mms_spmidi] => true
            [mms_mmf] => false
            [mms_mp3] => true
            [mms_evrc] => false
            [mms_qcelp] => false
            [mms_ota_bitmap] => false
            [mms_nokia_wallpaper] => false
            [mms_nokia_operatorlogo] => false
            [mms_nokia_3dscreensaver] => false
            [mms_nokia_ringingtone] => false
            [mms_rmf] => false
            [mms_xmf] => false
            [mms_symbian_install] => false
            [mms_jar] => false
            [mms_jad] => false
            [mms_vcard] => true
            [mms_vcalendar] => true
            [mms_wml] => false
            [mms_wbxml] => false
            [mms_wmlc] => false
            [mms_video] => true
            [mms_mp4] => true
            [mms_3gpp] => true
            [mms_3gpp2] => false
            [mms_max_frame_rate] => 0
            [nokiaring] => false
            [picturemessage] => false
            [operatorlogo] => false
            [largeoperatorlogo] => false
            [callericon] => false
            [nokiavcard] => false
            [nokiavcal] => false
            [sckl_ringtone] => false
            [sckl_operatorlogo] => false
            [sckl_groupgraphic] => false
            [sckl_vcard] => false
            [sckl_vcalendar] => false
            [text_imelody] => false
            [ems] => false
            [ems_variablesizedpictures] => false
            [ems_imelody] => false
            [ems_odi] => false
            [ems_upi] => false
            [ems_version] => 0
            [siemens_ota] => false
            [siemens_logo_width] => 101
            [siemens_logo_height] => 29
            [siemens_screensaver_width] => 101
            [siemens_screensaver_height] => 50
            [gprtf] => false
            [sagem_v1] => false
            [sagem_v2] => false
            [panasonic] => false
            [sms_enabled] => true
            [wav] => false
            [mmf] => false
            [smf] => false
            [mld] => false
            [midi_monophonic] => true
            [midi_polyphonic] => true
            [sp_midi] => true
            [rmf] => false
            [xmf] => false
            [compactmidi] => false
            [digiplug] => false
            [nokia_ringtone] => false
            [imelody] => true
            [au] => false
            [amr] => true
            [awb] => false
            [aac] => true
            [mp3] => true
            [voices] => 64
            [qcelp] => false
            [evrc] => false
            [flash_lite_version] =>
            [fl_wallpaper] => false
            [fl_screensaver] => false
            [fl_standalone] => false
            [fl_browser] => false
            [fl_sub_lcd] => false
            [full_flash_support] => false
            [css_supports_width_as_percentage] => true
            [css_border_image] => none
            [css_rounded_corners] => none
            [css_gradient] => none
            [css_spriting] => false
            [css_gradient_linear] => none
            [is_transcoder] => false
            [transcoder_ua_header] => user-agent
            [rss_support] => false
            [pdf_support] => false
            [progressive_download] => true
            [playback_vcodec_h263_0] => 30
            [playback_vcodec_h263_3] => -1
            [playback_vcodec_mpeg4_sp] => 3
            [playback_vcodec_mpeg4_asp] => -1
            [playback_vcodec_h264_bp] => -1
            [playback_real_media] => none
            [playback_3gpp] => true
            [playback_3g2] => false
            [playback_mp4] => false
            [playback_mov] => false
            [playback_acodec_amr] => nb
            [playback_acodec_aac] => lc
            [playback_df_size_limit] => 0
            [playback_directdownload_size_limit] => 0
            [playback_inline_size_limit] => 0
            [playback_oma_size_limit] => 0
            [playback_acodec_qcelp] => false
            [playback_wmv] => none
            [hinted_progressive_download] => false
            [html_preferred_dtd] => xhtml_mp1
            [viewport_supported] => false
            [viewport_width] =>
            [viewport_userscalable] =>
            [viewport_initial_scale] =>
            [viewport_maximum_scale] =>
            [viewport_minimum_scale] =>
            [mobileoptimized] => false
            [handheldfriendly] => false
            [canvas_support] => none
            [image_inlining] => false
            [is_smarttv] => false
            [is_console] => false
            [nfc_support] => false
            [ux_full_desktop] => false
            [jqm_grade] => none
            [is_sencha_touch_ok] => false
            [controlcap_is_smartphone] => default
            [controlcap_is_ios] => default
            [controlcap_is_android] => default
            [controlcap_is_robot] => force_true
            [controlcap_is_app] => default
            [controlcap_advertised_device_os] => default
            [controlcap_advertised_device_os_version] => default
            [controlcap_advertised_browser] => default
            [controlcap_advertised_browser_version] => default
            [controlcap_is_windows_phone] => default
            [controlcap_is_full_desktop] => default
            [controlcap_is_largescreen] => default
            [controlcap_is_mobile] => default
            [controlcap_is_touchscreen] => default
            [controlcap_is_wml_preferred] => default
            [controlcap_is_xhtmlmp_preferred] => default
            [controlcap_is_html_preferred] => default
            [controlcap_form_factor] => default
            [controlcap_complete_device_name] => default
        )

)

        close

About this comparison

                The primary goal of this project is simple

                I wanted to know which user agent parser is the most accurate in each part - device detection, bot detection and so on...

                The secondary goal is to provide a source for all user agent parsers to improve their detection based on this results.

                You can also improve this further, by suggesting ideas at ThaDafinser/UserAgentParserComparison

                The comparison is based on the abstraction by ThaDafinser/UserAgentParser

			Comparison created 2016-02-13 13:34:07 | by
            ThaDafinser


text:
/*
Kriesi (http://themeforest.net/user/Kriesi)
http://www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery
*/

function quick() {
    $("#quick ul ").css({ display: "none" });
    $("#quick li").hover(function () {
	$(this).find('ul:first').css({visibility: "visible",display: "none"}).show(400);
    }, function () {
        $(this).find('ul:first').css({ visibility: "hidden" });
    });
}

$(document).ready(function () {
    quick();
});


text:
<?php

return [

	/*
	|--------------------------------------------------------------------------
	| Default Active Theme
	|--------------------------------------------------------------------------
	|
	| Assign the default active theme to be used if one is not set during
	| runtime. This is especially useful if you're developing a very basic
	| application that does not require dynamically changing the theme.
	|
	*/

	'active' => 'material',

	/*
	|--------------------------------------------------------------------------
	| Theme Paths
	|--------------------------------------------------------------------------
	|
	*/

	'paths' => [

		/*
		|----------------------------------------------------------------------
		| Absolute Path
		|----------------------------------------------------------------------
		|
		| Define the absolute path where you'd like to store your themes. Note
		| that if you choose a path that's outside of your public directory, you
		| will still need to store your assets within your public directory.
		|
		*/

		'absolute' => public_path('themes'),

		/*
		|----------------------------------------------------------------------
		| Base Path
		|----------------------------------------------------------------------
		|
		| Define the base path where your themes will be publically available.
		| This is used to generate the correct URL when utilizing both the
		| asset() and secureAsset() methods.
		|
		*/

		'base' => 'themes',

		/*
		|----------------------------------------------------------------------
		| Assets Path
		|----------------------------------------------------------------------
		|
		| Define the path that will store all assets for each of your themes.
		| This is used to generate the correct URL when utilizing both the
		| asset() and secureAsset() methods.
		|
		*/

		'assets' => 'assets',

	]

];


text:
'use strict';

//Setting up route
angular.module('mean.meanStarter').config(['$meanStateProvider', '$urlRouterProvider',
  function($meanStateProvider, $urlRouterProvider) {
    // For unmatched routes:
    $urlRouterProvider.otherwise('/');

    // states for my app
    $meanStateProvider
      .state('home', {
        url: '/',
        templateUrl: 'meanStarter/views/system/index.html'
      })
      .state('tmp scrape page', {
          url: '/scrape/',
         templateUrl: 'meanStarter/views/system/header.html'
      });
  }
]).config(['$locationProvider',
  function($locationProvider) {
    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false
    });
  }
]);


text:
This module defines the `MonadWriter` type class and its instances.

#### `MonadWriter`

``` purescript
class MonadWriter w m where
  writer :: forall a. Tuple a w -> m a
  listen :: forall a. m a -> m (Tuple a w)
  pass :: forall a. m (Tuple a (w -> w)) -> m a
```

The `MonadWriter w` type class represents those monads which support a monoidal accumulator
of type `w`.

- `writer` appends a value to the accumulator.
- `listen` modifies the result to include the changes to the accumulator.
- `pass` applies the returned function to the accumulator.

An implementation is provided for `WriterT`, and for other monad transformers
defined in this library.

Laws:

- `writer a mempty = pure a`
- `do { tell x ; tell y } = tell (x <> y)`
- `listen (pure a) = pure (Tuple a mempty)`
- `listen (writer a x) = tell x $> Tuple a x`

#### `tell`

``` purescript
tell :: forall w m a. (Monoid w, Monad m, MonadWriter w m) => w -> m Unit
```

Append a value to the accumulator.

#### `listens`

``` purescript
listens :: forall w m a b. (Monoid w, Monad m, MonadWriter w m) => (w -> b) -> m a -> m (Tuple a b)
```

Read a value which depends on the modifications made to the accumulator during an action.

#### `censor`

``` purescript
censor :: forall w m a. (Monoid w, Monad m, MonadWriter w m) => (w -> w) -> m a -> m a
```

Modify the final accumulator value by applying a function.

#### `monadWriterWriterT`

``` purescript
instance monadWriterWriterT :: (Monoid w, Monad m) => MonadWriter w (WriterT w m)
```

#### `monadWriterErrorT`

``` purescript
instance monadWriterErrorT :: (Monad m, MonadWriter w m) => MonadWriter w (ErrorT e m)
```

#### `monadWriterMaybeT`

``` purescript
instance monadWriterMaybeT :: (Monad m, MonadWriter w m) => MonadWriter w (MaybeT m)
```

#### `monadWriterStateT`

``` purescript
instance monadWriterStateT :: (Monad m, MonadWriter w m) => MonadWriter w (StateT s m)
```

#### `monadWriterReaderT`

``` purescript
instance monadWriterReaderT :: (Monad m, MonadWriter w m) => MonadWriter w (ReaderT r m)
```

#### `monadWriterRWST`

``` purescript
instance monadWriterRWST :: (Monad m, Monoid w) => MonadWriter w (RWST r w s m)
```

## Module Control.Monad.Writer.Trans

This module defines the writer monad transformer, `WriterT`.

#### `WriterT`

``` purescript
newtype WriterT w m a
  = WriterT (m (Tuple a w))
```

The writer monad transformer.

This monad transformer extends the base monad with a monoidal accumulator of
type `w`.

The `MonadWriter` type class describes the operations supported by this monad.

#### `runWriterT`

``` purescript
runWriterT :: forall w m a. WriterT w m a -> m (Tuple a w)
```

Run a computation in the `WriterT` monad.

#### `execWriterT`

``` purescript
execWriterT :: forall w m a. (Apply m) => WriterT w m a -> m w
```

Run a computation in the `WriterT` monad, discarding the result.

#### `mapWriterT`

``` purescript
mapWriterT :: forall w1 w2 m1 m2 a b. (m1 (Tuple a w1) -> m2 (Tuple b w2)) -> WriterT w1 m1 a -> WriterT w2 m2 b
```

Change the accumulator and base monad types in a `WriterT` monad action.

#### `functorWriterT`

``` purescript
instance functorWriterT :: (Functor m) => Functor (WriterT w m)
```

#### `applyWriterT`

``` purescript
instance applyWriterT :: (Monoid w, Apply m) => Apply (WriterT w m)
```

#### `applicativeWriterT`

``` purescript
instance applicativeWriterT :: (Monoid w, Applicative m) => Applicative (WriterT w m)
```

#### `altWriterT`

``` purescript
instance altWriterT :: (Monoid w, Alt m) => Alt (WriterT w m)
```

#### `plusWriterT`

``` purescript
instance plusWriterT :: (Monoid w, Plus m) => Plus (WriterT w m)
```

#### `alternativeWriterT`

``` purescript
instance alternativeWriterT :: (Monoid w, Alternative m) => Alternative (WriterT w m)
```

#### `bindWriterT`

``` purescript
instance bindWriterT :: (Monoid w, Monad m) => Bind (WriterT w m)
```

#### `monadWriterT`

``` purescript
instance monadWriterT :: (Monoid w, Monad m) => Monad (WriterT w m)
```

#### `monadPlusWriterT`

``` purescript
instance monadPlusWriterT :: (Monoid w, MonadPlus m) => MonadPlus (WriterT w m)
```

#### `monadTransWriterT`

``` purescript
instance monadTransWriterT :: (Monoid w) => MonadTrans (WriterT w)
```

#### `liftCatchWriter`

``` purescript
liftCatchWriter :: forall w m e a. (m (Tuple a w) -> (e -> m (Tuple a w)) -> m (Tuple a w)) -> WriterT w m a -> (e -> WriterT w m a) -> WriterT w m a
```

#### `liftCallCCWriter`

``` purescript
liftCallCCWriter :: forall w m a b. (Monoid w) => (((Tuple a w -> m (Tuple b w)) -> m (Tuple a w)) -> m (Tuple a w)) -> ((a -> WriterT w m b) -> WriterT w m a) -> WriterT w m a
```


text:
class OmahaUI : public web::WebUIIOSController {
 public:
  explicit OmahaUI(web::WebUIIOS* web_ui, const std::string& host);

  OmahaUI(const OmahaUI&) = delete;
  OmahaUI& operator=(const OmahaUI&) = delete;

  ~OmahaUI() override;
};

#endif  // IOS_CHROME_BROWSER_UI_WEBUI_OMAHA_UI_H_


text:
"""
Copyright, the CVXPY authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from typing import Tuple

import numpy as np
import scipy.sparse as sp

import cvxpy.settings as s
from cvxpy.atoms.elementwise.elementwise import Elementwise

class ceil(Elementwise):
    """Elementwise ceiling."""

    def __init__(self, x) -> None:
        return super(ceil, self).__init__(x)

    @Elementwise.numpy_numeric
    def numeric(self, values):
        decimals = int(np.abs(np.log10(s.ATOM_EVAL_TOL)))
        return np.ceil(np.around(values[0], decimals=decimals))

    def sign_from_args(self) -> Tuple[bool, bool]:
        """Returns sign (is positive, is negative) of the expression.
        """
        if self.args[0].is_nonneg() and self.args[0].is_nonpos():
            return (True, True)
        elif self.args[0].is_nonneg():
            return (True, False)
        elif self.args[0].is_nonpos():
            return (False, True)
        else:
            return (False, False)

    def is_atom_convex(self) -> bool:
        """Is the atom convex?
        """
        return False

    def is_atom_concave(self) -> bool:
        """Is the atom concave?
        """
        return False

    def is_atom_log_log_convex(self) -> bool:
        """Is the atom log-log convex?
        """
        return False

    def is_atom_log_log_concave(self) -> bool:
        """Is the atom log-log concave?
        """
        return False

    def is_atom_quasiconvex(self) -> bool:
        """Is the atom quasiconvex?
        """
        return True

    def is_atom_quasiconcave(self) -> bool:
        """Is the atom quasiconcave?
        """
        return True

    def is_incr(self, idx) -> bool:
        """Is the composition non-decreasing in argument idx?
        """
        return True

    def is_decr(self, idx) -> bool:
        """Is the composition non-increasing in argument idx?
        """
        return False

    def _grad(self, values):
        """Gives the (sub/super)gradient of the atom w.r.t. each argument.

        Matrix expressions are vectorized, so the gradient is a matrix.

        Args:
            values: A list of numeric values for the arguments.

        Returns:
            A list of SciPy CSC sparse matrices or None.
        """
        return sp.csc_matrix(self.args[0].shape)

class floor(Elementwise):
    """Elementwise floor."""

    def __init__(self, x) -> None:
        return super(floor, self).__init__(x)

    @Elementwise.numpy_numeric
    def numeric(self, values):
        return np.floor(values[0])

    def sign_from_args(self) -> Tuple[bool, bool]:
        """Returns sign (is positive, is negative) of the expression.
        """
        if self.args[0].is_nonneg() and self.args[0].is_nonpos():
            return (True, True)
        elif self.args[0].is_nonneg():
            return (True, False)
        elif self.args[0].is_nonpos():
            return (False, True)
        else:
            return (False, False)

    def is_atom_convex(self) -> bool:
        """Is the atom convex?
        """
        return False

    def is_atom_concave(self) -> bool:
        """Is the atom concave?
        """
        return False

    def is_atom_log_log_convex(self) -> bool:
        """Is the atom log-log convex?
        """
        return False

    def is_atom_log_log_concave(self) -> bool:
        """Is the atom log-log concave?
        """
        return False

    def is_atom_quasiconvex(self) -> bool:
        """Is the atom quasiconvex?
        """
        return True

    def is_atom_quasiconcave(self) -> bool:
        """Is the atom quasiconcave?
        """
        return True

    def is_incr(self, idx) -> bool:
        """Is the composition non-decreasing in argument idx?
        """
        return True

    def is_decr(self, idx) -> bool:
        """Is the composition non-increasing in argument idx?
        """
        return False

    def _grad(self, values):
        """Gives the (sub/super)gradient of the atom w.r.t. each argument.

        Matrix expressions are vectorized, so the gradient is a matrix.

        Args:
            values: A list of numeric values for the arguments.

        Returns:
            A list of SciPy CSC sparse matrices or None.
        """
        return sp.csc_matrix(self.args[0].shape)


text:
A configuration provider that reloads when it receives a message containing configuration changes from a `RockLib.Messaging.IReceiver`.

### Setup

Add the messaging provider to an existing configuration builder with the `AddRockLibMessagingProvider` extension (in the `RockLib.Configuration.MessagingProvider` namespace). Note that the messaging configuration provider does not add any values to the configuration initially.

There are two overloads for the extension method. The first one uses an existing instance of `IReceiver`:

```c#
IReceiver receiver = new NamedPipeReceiver(name: "example_receiver", pipeName: "example-pipe-name");

ConfigurationBuilder builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddRockLibMessagingProvider(receiver); // Add the messaging provider last
```

The other overload creates a new instance of `IReceiver` by name from the configuration under construction:

```json
{
  "RockLib.Messaging": {
    "type": "RockLib.Messaging.NamedPipes.NamedPipeReceiver, RockLib.Messaging.NamedPipes",
    "value": {
      "name": "example_receiver",
      "pipeName": "example-pipe-name"
    }
  }
}
```

```c#
ConfigurationBuilder builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json") // Assume appsettings.json contains the above JSON
    .AddRockLibMessagingProvider("example_receiver"); // Add the messaging provider last
```

Each of these example adds an equivalent messaging provider to the configuration builder. All `IConfigurationRoot` objects built by the configuration builder will listen to the same `IReceiver` for configuration changes.

### Making a configuration change

This section assumes there is an `appsettings.json` file and a configuration built as follows:

```json
{
  "AppSettings": {
    "Foo": "abc",
    "Bar": 123
  }
}
```

```c#
IReceiver receiver = new NamedPipeReceiver(name: "example_receiver", pipeName: "example-pipe-name");

ConfigurationBuilder builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddRockLibMessagingProvider(receiver);

IConfigurationRoot configuration = builder.Build();
```

To make a configuration change, send a message to the receiver with a JSON payload that describes the configuration changes. In this example, we want to change the values of `AppSettings:Foo` and `AppSettings:Bar` to `"xyz"` and `456` respectively. Note that the JSON is flattened into key/value pairs.

```c#
string configChange = @"{
  ""AppSettings:Foo"": ""xyz"",
  ""AppSettings:Bar"": 456
}";

using (ISender sender = new NamedPipeSender(name: "example_receiver", pipeName: "example-pipe-name"))
{
    await sender.SendAsync(configChange);
}
```

After the message is received, the `configuration` object will have the new values for "AppSettings:Foo" and "AppSettings:Bar".

### Filters

The messaging configuration provider can be protected by passing a instance of the `ISettingFilter` instance to the extension methods. For reference, this is the definition of that interface:

```c#
public interface ISettingFilter
{
    bool ShouldProcessSettingChange(string setting, IReadOnlyDictionary<string, object> receivedMessageHeaders);
}
```

When a message is received, each setting is passed to the `ShouldProcessSettingChange` method along with the `Headers` property of the received message. If the method returns true, the setting is changed. Otherwise, the setting is not changed.

RockLib.Configuration.MessagingProvider has three implementations of the `ISettingFilter` interface:

- `BlocklistSettingFilter`
  - Blocks specified settings, including child settings.
  - Has an optional inner filter.
- `SafelistSettingFilter`
  - Blocks any settings, including child settings, that are *not* specified.
  - Has an optional inner filter.
- `NullSettingFilter`
  - Doesn't block any settings.


text:
package com.born2play.solitaire.theme;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.net.Uri;
import android.support.annotation.Nullable;
import android.text.TextUtils;

import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * Created on 16/6/27.
 */
public class AssetProvider extends ContentProvider {
    @Override
    public AssetFileDescriptor openAssetFile(Uri paramUri, String paramString)throws FileNotFoundException{
        Object localObject = paramUri.getLastPathSegment();
        if (TextUtils.isEmpty((CharSequence)localObject)){
            throw new FileNotFoundException();
        }
        try{
            localObject = getContext().getAssets().openFd((String)localObject);
            return (AssetFileDescriptor)localObject;
        }catch (IOException e){
            e.printStackTrace();
        }
        return super.openAssetFile(paramUri, paramString);
    }
    @Override
    public boolean onCreate() {
        return true;
    }

    @Nullable
    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        return null;
    }

    @Nullable
    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        return 0;
    }
}


text:
<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="2" failures="0" disabled="0" errors="0" timestamp="2015-11-10T10:47:34" time="0.001" name="AllTests">
  <testsuite name="TypeTransform" tests="1" failures="0" disabled="0" errors="0" time="0">
    <testcase name="All" status="run" time="0" classname="TypeTransform" />
  </testsuite>
  <testsuite name="Product" tests="1" failures="0" disabled="0" errors="0" time="0">
    <testcase name="All" status="run" time="0" classname="Product" />
  </testsuite>
</testsuites>


text:
#include <QtCore/qglobal.h>

#ifdef QMLWEBSOCKET_LIB
# define QMLWEBSOCKET_EXPORT Q_DECL_EXPORT
#else
# define QMLWEBSOCKET_EXPORT Q_DECL_IMPORT
#endif


text:
 /*
  * Authors:
  *   Keith Whitwell <keith@tungstengraphics.com>
  *   Brian Paul
  */

#include "main/macros.h"
#include "program/prog_instruction.h"

#include "st_context.h"
#include "st_atom.h"
#include "st_texture.h"
#include "st_format.h"
#include "st_cb_texture.h"
#include "pipe/p_context.h"
#include "util/u_format.h"
#include "util/u_inlines.h"
#include "cso_cache/cso_context.h"

/**
 * Combine depth texture mode with "swizzle" so that depth mode swizzling
 * takes place before texture swizzling, and return the resulting swizzle.
 * If the format is not a depth format, return "swizzle" unchanged.
 *
 * \param format     PIPE_FORMAT_*.
 * \param swizzle    Texture swizzle, a bitmask computed using MAKE_SWIZZLE4.
 * \param depthmode  One of GL_LUMINANCE, GL_INTENSITY, GL_ALPHA.
 */
static GLuint apply_depthmode(enum pipe_format format,
                              GLuint swizzle, GLenum depthmode)
{
   const struct util_format_description *desc =
         util_format_description(format);
   unsigned char swiz[4];
   unsigned i;

   if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS ||
       desc->swizzle[0] == UTIL_FORMAT_SWIZZLE_NONE) {
      /* Not a depth format. */
      return swizzle;
   }

   for (i = 0; i < 4; i++)
      swiz[i] = GET_SWZ(swizzle, i);

   switch (depthmode) {
      case GL_LUMINANCE:
         /* Rewrite reads from W to ONE, and reads from XYZ to XXX. */
         for (i = 0; i < 4; i++)
            if (swiz[i] == SWIZZLE_W)
               swiz[i] = SWIZZLE_ONE;
            else if (swiz[i] < SWIZZLE_W)
               swiz[i] = SWIZZLE_X;
         break;

      case GL_INTENSITY:
         /* Rewrite reads from XYZW to XXXX. */
         for (i = 0; i < 4; i++)
            if (swiz[i] <= SWIZZLE_W)
               swiz[i] = SWIZZLE_X;
         break;

      case GL_ALPHA:
         /* Rewrite reads from W to X, and reads from XYZ to 000. */
         for (i = 0; i < 4; i++)
            if (swiz[i] == SWIZZLE_W)
               swiz[i] = SWIZZLE_X;
            else if (swiz[i] < SWIZZLE_W)
               swiz[i] = SWIZZLE_ZERO;
         break;
   }

   return MAKE_SWIZZLE4(swiz[0], swiz[1], swiz[2], swiz[3]);
}

/**
 * Return TRUE if the swizzling described by "swizzle" and
 * "depthmode" (for depth textures only) is different from the swizzling
 * set in the given sampler view.
 *
 * \param sv         A sampler view.
 * \param swizzle    Texture swizzle, a bitmask computed using MAKE_SWIZZLE4.
 * \param depthmode  One of GL_LUMINANCE, GL_INTENSITY, GL_ALPHA.
 */
static boolean check_sampler_swizzle(struct pipe_sampler_view *sv,
                                     GLuint swizzle, GLenum depthmode)
{
   swizzle = apply_depthmode(sv->texture->format, swizzle, depthmode);

   if ((sv->swizzle_r != GET_SWZ(swizzle, 0)) ||
       (sv->swizzle_g != GET_SWZ(swizzle, 1)) ||
       (sv->swizzle_b != GET_SWZ(swizzle, 2)) ||
       (sv->swizzle_a != GET_SWZ(swizzle, 3)))
      return true;
   return false;
}

static INLINE struct pipe_sampler_view *
st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe,
					  struct st_texture_object *stObj,
					  enum pipe_format format)

{
   struct pipe_sampler_view templ;
   GLuint swizzle = apply_depthmode(stObj->pt->format,
                                    stObj->base._Swizzle,
                                    stObj->base.DepthMode);

   u_sampler_view_default_template(&templ,
                                   stObj->pt,
                                   format);

   if (swizzle != SWIZZLE_NOOP) {
      templ.swizzle_r = GET_SWZ(swizzle, 0);
      templ.swizzle_g = GET_SWZ(swizzle, 1);
      templ.swizzle_b = GET_SWZ(swizzle, 2);
      templ.swizzle_a = GET_SWZ(swizzle, 3);
   }

   return pipe->create_sampler_view(pipe, stObj->pt, &templ);
}

static INLINE struct pipe_sampler_view *
st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj,
				       struct pipe_context *pipe,
				       enum pipe_format format)

{
   if (!stObj || !stObj->pt) {
      return NULL;
   }

   if (!stObj->sampler_view) {
      stObj->sampler_view = st_create_texture_sampler_view_from_stobj(pipe, stObj, format);
   }

   return stObj->sampler_view;
}

static void
update_textures(struct st_context *st)
{
   struct pipe_context *pipe = st->pipe;
   struct gl_vertex_program *vprog = st->ctx->VertexProgram._Current;
   struct gl_fragment_program *fprog = st->ctx->FragmentProgram._Current;
   const GLbitfield samplersUsed = (vprog->Base.SamplersUsed |
                                    fprog->Base.SamplersUsed);
   GLuint su;

   st->state.num_textures = 0;

   /* loop over sampler units (aka tex image units) */
   for (su = 0; su < st->ctx->Const.MaxTextureImageUnits; su++) {
      struct pipe_sampler_view *sampler_view = NULL;
      enum pipe_format st_view_format;
      if (samplersUsed & (1 << su)) {
         struct gl_texture_object *texObj;
         struct st_texture_object *stObj;
         GLboolean retval;
         GLuint texUnit;

         if (fprog->Base.SamplersUsed & (1 << su))
            texUnit = fprog->Base.SamplerUnits[su];
         else
            texUnit = vprog->Base.SamplerUnits[su];

         texObj = st->ctx->Texture.Unit[texUnit]._Current;

         if (!texObj) {
            texObj = st_get_default_texture(st);
         }
         stObj = st_texture_object(texObj);

         retval = st_finalize_texture(st->ctx, st->pipe, texObj);
         if (!retval) {
            /* out of mem */
            continue;
         }

	 st_view_format = stObj->pt->format;
	 {
	    struct st_texture_image *firstImage;
	    enum pipe_format firstImageFormat;
	    firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);

	    firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
	    if (firstImageFormat != stObj->pt->format)
	       st_view_format = firstImageFormat;

	 }
         st->state.num_textures = su + 1;

	 /* if sampler view has changed dereference it */
	 if (stObj->sampler_view)
            if (check_sampler_swizzle(stObj->sampler_view,
                                      stObj->base._Swizzle,
                                      stObj->base.DepthMode) ||
                (st_view_format != stObj->sampler_view->format))
	       pipe_sampler_view_reference(&stObj->sampler_view, NULL);

         sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, st_view_format);
      }
      pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view);
   }

   cso_set_fragment_sampler_views(st->cso_context,
                                  st->state.num_textures,
                                  st->state.sampler_views);
   if (st->ctx->Const.MaxVertexTextureImageUnits > 0) {
      cso_set_vertex_sampler_views(st->cso_context,
                                   MIN2(st->state.num_textures,
                                        st->ctx->Const.MaxVertexTextureImageUnits),
                                   st->state.sampler_views);
   }
}

const struct st_tracked_state st_update_texture = {
   "st_update_texture",					/* name */
   {							/* dirty */
      _NEW_TEXTURE,					/* mesa */
      ST_NEW_FRAGMENT_PROGRAM,				/* st */
   },
   update_textures					/* update */
};

static void
finalize_textures(struct st_context *st)
{
   struct gl_fragment_program *fprog = st->ctx->FragmentProgram._Current;
   const GLboolean prev_missing_textures = st->missing_textures;
   GLuint su;

   st->missing_textures = GL_FALSE;

   for (su = 0; su < st->ctx->Const.MaxTextureCoordUnits; su++) {
      if (fprog->Base.SamplersUsed & (1 << su)) {
         const GLuint texUnit = fprog->Base.SamplerUnits[su];
         struct gl_texture_object *texObj
            = st->ctx->Texture.Unit[texUnit]._Current;

         if (texObj) {
            GLboolean retval;

            retval = st_finalize_texture(st->ctx, st->pipe, texObj);
            if (!retval) {
               /* out of mem */
               st->missing_textures = GL_TRUE;
               continue;
            }
         }
      }
   }

   if (prev_missing_textures != st->missing_textures)
      st->dirty.st |= ST_NEW_FRAGMENT_PROGRAM;
}

const struct st_tracked_state st_finalize_textures = {
   "st_finalize_textures",		/* name */
   {					/* dirty */
      _NEW_TEXTURE,			/* mesa */
      0,				/* st */
   },
   finalize_textures			/* update */
};


text:
/**
 * @constructor
 */
function TextureBallLayer(layer) {
  this.config = layer.config;

/**Comment yo shit, ya'll
*/
  this.scene = new THREE.Scene();
  this.camera = new THREE.PerspectiveCamera(45, 16 / 9, 1, 100);

  this.camera.position.z = 0;
  this.camera.position.y = 34;

  this.camera.lookAt(new THREE.Vector3(0,0,0));

  this.top_material = new THREE.ShaderMaterial(SHADERS.topshader);
  this.wall_material = new THREE.ShaderMaterial(SHADERS.wallshader);
  this.ball_material = new THREE.ShaderMaterial(SHADERS.ballshader);
  this.ball_material2 = new THREE.ShaderMaterial(SHADERS.ballshader2);
  this.ball_material3 = new THREE.ShaderMaterial(SHADERS.ballshader3);

  var light = new THREE.PointLight( 0xffffff, 1, 100 );
  light.position.set( 2, 2, 2 );
  this.scene.add(light);

  var geometry = new THREE.SphereGeometry(3, 50, 50, 0, Math.PI * 2);
  var ball_material = new THREE.ShaderMaterial(SHADERS.topshader);
  var ball = new THREE.Mesh(geometry, ball_material);
  ball.position.set(4,0,6);
  this.scene.add(ball);

  var ball_material2 = new THREE.ShaderMaterial(SHADERS.wallshader);
  var ball2 = new THREE.Mesh(geometry, ball_material2);
  ball2.position.set(-4,0,-6);
  this.scene.add(ball2);

  var ball_material3 = new THREE.ShaderMaterial(SHADERS.ballshader);
  var ball3 = new THREE.Mesh(geometry, ball_material3);
  ball3.position.set(4,0,-6);
  this.scene.add(ball3);

  var ball_material4 = new THREE.ShaderMaterial(SHADERS.ballshader2);
  var ball4 = new THREE.Mesh(geometry, ball_material4);
  ball4.position.set(-4,0,6);
  this.scene.add(ball4);
  this.renderPass = new THREE.RenderPass(this.scene, this.camera);

  var ball_material5 = new THREE.ShaderMaterial(SHADERS.ballshader3);
  var ball5 = new THREE.Mesh(geometry, ball_material5);
  ball5.position.set(-6,0,0);
  this.scene.add(ball5);
  this.renderPass = new THREE.RenderPass(this.scene, this.camera);
}

TextureBallLayer.prototype.getEffectComposerPass = function() {
  return this.renderPass;
};

TextureBallLayer.prototype.start = function() {
};

TextureBallLayer.prototype.end = function() {
};

TextureBallLayer.prototype.update = function(frame) {

  this.wall_material.uniforms.colorA.value = new THREE.Color(19 / 255, 18 / 255, 94 / 255);
  this.wall_material.uniforms.colorB.value = new THREE.Color(208 / 255, 225 / 255, 255 / 255);
  this.wall_material.uniforms.time.value = frame;

  this.ball_material.uniforms.time.value = frame;
  this.ball_material2.uniforms.time.value = frame;
  this.ball_material3.uniforms.time.value = frame;

  this.top_material.uniforms.tiles.value = 4;
  this.top_material.uniforms.time.value = frame;
};


text:
package com.planet_ink.coffee_mud.Abilities.Prayers;
import com.planet_ink.coffee_mud.core.interfaces.*;
import com.planet_ink.coffee_mud.core.*;
import com.planet_ink.coffee_mud.core.collections.*;
import com.planet_ink.coffee_mud.Abilities.interfaces.*;
import com.planet_ink.coffee_mud.Areas.interfaces.*;
import com.planet_ink.coffee_mud.Behaviors.interfaces.*;
import com.planet_ink.coffee_mud.CharClasses.interfaces.*;
import com.planet_ink.coffee_mud.Commands.interfaces.*;
import com.planet_ink.coffee_mud.Common.interfaces.*;
import com.planet_ink.coffee_mud.Exits.interfaces.*;
import com.planet_ink.coffee_mud.Items.interfaces.*;
import com.planet_ink.coffee_mud.Locales.interfaces.*;
import com.planet_ink.coffee_mud.MOBS.interfaces.*;
import com.planet_ink.coffee_mud.Races.interfaces.*;

import java.util.*;

@SuppressWarnings("rawtypes")
public class Prayer_Maladiction extends Prayer
{
	@Override public String ID() { return "Prayer_Maladiction"; }
	private final static String localizedName = CMLib.lang()._("Maladiction");
	@Override public String name() { return localizedName; }
	private final static String localizedStaticDisplay = CMLib.lang()._("(Maladiction)");
	@Override public String displayText() { return localizedStaticDisplay; }
	@Override public int abstractQuality(){ return Ability.QUALITY_MALICIOUS;}
	@Override public int classificationCode(){return Ability.ACODE_PRAYER|Ability.DOMAIN_CURSING;}
	@Override public long flags(){return Ability.FLAG_UNHOLY;}
	@Override protected int canAffectCode(){return Ability.CAN_MOBS;}
	@Override protected int canTargetCode(){return Ability.CAN_MOBS;}

	@Override
	public void unInvoke()
	{
		// undo the affects of this spell
		if(!(affected instanceof MOB))
			return;
		final MOB mob=(MOB)affected;

		super.unInvoke();

		if(canBeUninvoked())
			mob.tell(_("Your maladiction fades."));
	}

	@Override
	public boolean okMessage(final Environmental myHost, final CMMsg msg)
	{
		if((msg.sourceMinor()==CMMsg.TYP_EXPCHANGE)
		&&(msg.source()==affected))
		{
			if(msg.value()<0)
				msg.setValue(msg.value()*2);
			else
				msg.setValue(msg.value()/2);
		}
		return super.okMessage(myHost,msg);
	}

	@Override
	public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel)
	{
		final MOB target=getTarget(mob,commands,givenTarget);
		if(target==null) return false;

		if(!super.invoke(mob,commands,givenTarget,auto,asLevel))
			return false;

		final boolean success=proficiencyCheck(mob,0,auto);

		if(success)
		{
			// it worked, so build a copy of this ability,
			// and add it to the affects list of the
			// affected MOB.  Then tell everyone else
			// what happened.
			final CMMsg msg=CMClass.getMsg(mob,target,this,verbalCastCode(mob,target,auto),auto?_("<T-NAME> become(s) filled with maladiction!"):_("^S<S-NAME> @x1 for a maladiction over <T-NAMESELF>!^?",prayWord(mob)));
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				if(msg.value()<=0)
					maliciousAffect(mob,target,asLevel,CMProps.getIntVar(CMProps.Int.TICKSPERMUDMONTH),-1);
			}
		}
		else
			return maliciousFizzle(mob,target,_("<S-NAME> @x1 for a maladiction over <T-YOUPOSS>, but there is no answer.",prayWord(mob)));

		// return whether it worked
		return success;
	}
}


text:
@protocol Emoji_Keyboard_CollectionViewCellDelegate <NSObject>

- (void)clickImageViewInCellKey:(NSString *)keyStr;
- (void)emojiDeleteEvent;

@end

@interface Emoji_Keyboard_CollectionViewCell : UICollectionViewCell<Emoji_ImageViewDelegate>
{
    @private
    NSDictionary *allEmojiDict;
    NSArray *allKey;
}
@property(nonatomic, strong) UIView *cellView;
@property(nonatomic, strong) NSIndexPath *indexPath;
@property(nonatomic, strong) id<Emoji_Keyboard_CollectionViewCellDelegate>emKeyBoardDelegate;

@end


text:
/* ==========================================================================
   Common classes
   ========================================================================== */

body {
	background: url(../files/common/filename.jpg) no-repeat;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../files/common/bg_cover-1.jpg',sizingMethod='scale')";
}

.transition {
	transition: color .25s ease-in-out;
  -moz-transition: color .25s ease-in-out;
  -webkit-transition: color .25s ease-in-out;
  -o-transition: color .25s ease-in-out;
}

.ie-opacity {
  filter: alpha(opacity=10);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=10);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=10)";

  filter: alpha(opacity=20);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=20);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=20)";

  filter: alpha(opacity=30);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=30)";

  filter: alpha(opacity=40);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=40)";

  filter: alpha(opacity=50);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=50)";

  filter: alpha(opacity=60);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=60);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=60)";

  filter: alpha(opacity=70);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=70)";

  filter: alpha(opacity=80);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=80);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=80)";

  filter: alpha(opacity=90);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=90);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=90)";

  filter: alpha(opacity=100);
  filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
}

/* To disable responsive */
@media (min-width: 1px) {
  .container {
    width: 940px;
  }
  .col-lg-1,
  .col-lg-2,
  .col-lg-3,
  .col-lg-4,
  .col-lg-5,
  .col-lg-6,
  .col-lg-7,
  .col-lg-8,
  .col-lg-9,
  .col-lg-10,
  .col-lg-11,
  .col-lg-12 {
    float: left;
  }
  .col-lg-1 {
    width: 8.333333333333332%;
  }
  .col-lg-2 {
    width: 16.666666666666664%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-4 {
    width: 33.33333333333333%;
  }
  .col-lg-5 {
    width: 41.66666666666667%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-7 {
    width: 58.333333333333336%;
  }
  .col-lg-8 {
    width: 66.66666666666666%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-10 {
    width: 83.33333333333334%;
  }
  .col-lg-11 {
    width: 91.66666666666666%;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-offset-1 {
    margin-left: 8.333333333333332%;
  }
  .col-offset-2 {
    margin-left: 16.666666666666664%;
  }
  .col-offset-3 {
    margin-left: 25%;
  }
  .col-offset-4 {
    margin-left: 33.33333333333333%;
  }
  .col-offset-5 {
    margin-left: 41.66666666666667%;
  }
  .col-offset-6 {
    margin-left: 50%;
  }
  .col-offset-7 {
    margin-left: 58.333333333333336%;
  }
  .col-offset-8 {
    margin-left: 66.66666666666666%;
  }
  .col-offset-9 {
    margin-left: 75%;
  }
  .col-offset-10 {
    margin-left: 83.33333333333334%;
  }
  .col-offset-11 {
    margin-left: 91.66666666666666%;
  }
}

/* To disable the min-width: 1200px media query */
@media (min-width: 991px) {
  .container {
    max-width: 940px;
  }
}

<?php
for($i=0;$i<7;$i++){
?>

<?php
}
>

/* Lorem ipsum
-------------------------------------------------- */

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?