/*

  Original copyright is below.  This is version git tag: 310927be9f.
  Further modifications:
  Author: Andy Clement (VMware) - recovery support


  Original copyright:

  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>
  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>
  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 * 
 * Contributors: IBM Corporation - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 * 
 * Contributors: IBM Corporation - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2014 IBM Corporation.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     IBM Corporation - Initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012, 2014 VMware, Inc. and others.
 * All Rights Reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     Andy Clement (VMware) - initial API and implementation
 *     Andrew Eisenberg (VMware) - implemented visitor pattern
 ******************************************************************************/

/*
  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2013 Andrew Eisenberg <andrew@eisenberg.as>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2012, 2013 VMware, Inc. and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     Andrew Eisenberg (VMware) - initial API and implementation
 *     IBM Corporation - Various improvements
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     IBM Corporation - Initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     IBM Coporation - Initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012, 2013 VMware, Inc. and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *	 Andy Clement (VMware) - initial API and implementation
 *	 Andrew Eisenberg (VMware) - implemented visitor pattern
 *   IBM Corporation - Various improvements
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012, 2013 VMware, Inc. and others.
 * All Rights Reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     Andrew Eisenberg (VMware) - initial API and implementation
 ******************************************************************************/

/*
  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2012, 2014 VMware, Inc. and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *	 Andy Clement (VMware) - initial API and implementation
 *	 Andrew Eisenberg (VMware) - implemented visitor pattern
 *   IBM Corporation - Various improvements
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*
  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2013 Alex Seville <hi@alexanderseville.com>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2013, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *	 IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors: IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2011, 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2010, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 * 
 * Contributors: IBM Corporation - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 * 
 * Contributors: IBM Corporation - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2011, 2014 IBM Corporation and others.
 * Copyright (c) 2012 VMware, Inc.
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License v1.0
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Andrew Eisenberg - rename to jsTemplateContentAssist.js
 *******************************************************************************/

/*

 Copyright (c) 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2014 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2012, 2014 VMware, Inc. and others.
 All Rights Reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern

 Copyright (c) 2012, 2013 VMware, Inc. and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andrew Eisenberg (VMware) - initial API and implementation
 IBM Corporation - Various improvements

 Copyright (c) 2013 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2013 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2013 IBM Corporation.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - Initial API and implementation

 Copyright (c) 2012, 2013 VMware, Inc. and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 IBM Corporation - Various improvements

 Copyright (c) 2012, 2013 VMware, Inc. and others.
 All Rights Reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andrew Eisenberg (VMware) - initial API and implementation

 Copyright (c) 2012, 2013 VMware, Inc. and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 IBM Corporation - Various improvements

 Copyright (c) 2012, 2014 VMware, Inc. and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 IBM Corporation - Various improvements

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2011, 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2010, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2011, 2014 IBM Corporation and others.
 Copyright (c) 2012 VMware, Inc.
 All rights reserved. This program and the accompanying materials are made
 available under the terms of the Eclipse Public License v1.0
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Corporation - initial API and implementation
 Andrew Eisenberg - rename to jsTemplateContentAssist.js

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).

 Contributors:
 IBM Coporation - Initial API and implementation

 Copyright (c) 2013, 2014 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation
*/
(function(a){var d,e,k,h,c,l,g,q,j,b,s,f,v,o,r,w,z,p,i,B,Q,K,N,U,R,O,la,qa,sa,za,ea,Fa,La,Ma,Ga,oa,ta,ua,ma,Aa,H,Sa,va,I,Z,Ha,Ba,X,na,ca,fa;function Na(t,b){if(!t)throw Error("ASSERT: "+b);}function Y(t,b){return A.slice(t,b)}function D(t){return"0123456789".indexOf(t)>=0}function E(t){return"01234567".indexOf(t)>=0}function wa(t){return t===" "||t==="\t"||t==="\u000b"||t==="\u000c"||t==="\u00a0"||t.charCodeAt(0)>=5760&&"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(t)>=
0}function J(t){return t==="\n"||t==="\r"||t==="\u2028"||t==="\u2029"}function V(t){return t==="$"||t==="_"||t==="\\"||t>="a"&&t<="z"||t>="A"&&t<="Z"||t.charCodeAt(0)>=128&&g.test(t)}function y(t){return t==="$"||t==="_"||t==="\\"||t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||t.charCodeAt(0)>=128&&q.test(t)}function ba(t){switch(t){case "class":case "enum":case "export":case "extends":case "import":case "super":return!0}return!1}function Oa(t){switch(t){case "implements":case "interface":case "package":case "private":case "protected":case "public":case "static":case "yield":case "let":return!0}return!1}
function ia(t){return t==="eval"||t==="arguments"}function Db(t){var b=!1;switch(t.length){case 2:b=t==="if"||t==="in"||t==="do";break;case 3:b=t==="var"||t==="for"||t==="new"||t==="try";break;case 4:b=t==="this"||t==="else"||t==="case"||t==="void"||t==="with";break;case 5:b=t==="while"||t==="break"||t==="catch"||t==="throw";break;case 6:b=t==="return"||t==="typeof"||t==="delete"||t==="switch";break;case 7:b=t==="default"||t==="finally";break;case 8:b=t==="function"||t==="continue"||t==="debugger";
break;case 10:b=t==="instanceof"}if(b)return!0;switch(t){case "const":return!0;case "yield":case "let":return!0}return S&&Oa(t)?!0:ba(t)}function T(){return A[m++]}function xa(){var b,c,a;for(a=c=!1;m<L;)if(b=A[m],a)b=T(),J(b)&&(a=!1,b==="\r"&&A[m]==="\n"&&++m,++M,P=m);else if(c)J(b)?(b==="\r"&&A[m+1]==="\n"&&++m,++M,++m,P=m,m>=L&&C({},j,"ILLEGAL")):(b=T(),m>=L&&C({},j,"ILLEGAL"),b==="*"&&(b=A[m],b==="/"&&(++m,c=!1)));else if(b==="/")if(b=A[m+1],b==="/")m+=2,a=!0;else if(b==="*")m+=2,c=!0,m>=L&&C({},
j,"ILLEGAL");else break;else if(wa(b))++m;else if(J(b))++m,b==="\r"&&A[m]==="\n"&&++m,++M,P=m;else break}function ib(b){var c,a,d=0;c=b==="u"?4:2;for(b=0;b<c;++b)if(m<L&&"0123456789abcdefABCDEF".indexOf(A[m])>=0)a=T(),d=d*16+"0123456789abcdef".indexOf(a.toLowerCase());else return"";return String.fromCharCode(d)}function Eb(){var b,c,a,d;b=A[m];if(V(b)){c=m;if(b==="\\"){++m;if(A[m]!=="u")return;++m;d=m;if(b=ib("u")){if(b==="\\"||!V(b))return;a=b}else m=d,a="u"}else a=T();for(;m<L;){b=A[m];if(!y(b))break;
if(b==="\\"){++m;if(A[m]!=="u")return;++m;d=m;if(b=ib("u")){if(b==="\\"||!y(b))return;a+=b}else m=d,a+="u"}else a+=T()}return a.length===1?{type:I,value:a,lineNumber:M,lineStart:P,range:[c,m]}:Db(a)?{type:Z,value:a,lineNumber:M,lineStart:P,range:[c,m]}:a==="null"?{type:Ha,value:a,lineNumber:M,lineStart:P,range:[c,m]}:a==="true"||a==="false"?{type:Ba,value:a,lineNumber:M,lineStart:P,range:[c,m]}:{type:I,value:a,lineNumber:M,lineStart:P,range:[c,m]}}}function Fb(){var b=m,a=A[m],c,d,i;if(a===";"||a===
"{"||a==="}")return++m,{type:X,value:a,lineNumber:M,lineStart:P,range:[b,m]};if(a===","||a==="("||a===")")return++m,{type:X,value:a,lineNumber:M,lineStart:P,range:[b,m]};c=A[m+1];if(a==="."&&!D(c))return{type:X,value:T(),lineNumber:M,lineStart:P,range:[b,m]};d=A[m+2];i=A[m+3];if(a===">"&&c===">"&&d===">"&&i==="=")return m+=4,{type:X,value:">>>=",lineNumber:M,lineStart:P,range:[b,m]};if(a==="="&&c==="="&&d==="=")return m+=3,{type:X,value:"===",lineNumber:M,lineStart:P,range:[b,m]};if(a==="!"&&c===
"="&&d==="=")return m+=3,{type:X,value:"!==",lineNumber:M,lineStart:P,range:[b,m]};if(a===">"&&c===">"&&d===">")return m+=3,{type:X,value:">>>",lineNumber:M,lineStart:P,range:[b,m]};if(a==="<"&&c==="<"&&d==="=")return m+=3,{type:X,value:"<<=",lineNumber:M,lineStart:P,range:[b,m]};if(a===">"&&c===">"&&d==="=")return m+=3,{type:X,value:">>=",lineNumber:M,lineStart:P,range:[b,m]};if(c==="="&&"<>=!+-*%&|^/".indexOf(a)>=0)return m+=2,{type:X,value:a+c,lineNumber:M,lineStart:P,range:[b,m]};if(a===c&&"+-<>&|".indexOf(a)>=
0&&"+-<>&|".indexOf(c)>=0)return m+=2,{type:X,value:a+c,lineNumber:M,lineStart:P,range:[b,m]};if("[]<>+-*%&|^!~?:=/".indexOf(a)>=0)return{type:X,value:T(),lineNumber:M,lineStart:P,range:[b,m]}}function Gb(){var b,a,c;c=A[m];Na(D(c)||c===".","Numeric literal must start with a decimal digit or a decimal point");a=m;b="";if(c!=="."){b=T();c=A[m];if(b==="0"){if(c==="x"||c==="X"){for(b+=T();m<L;){c=A[m];if(!("0123456789abcdefABCDEF".indexOf(c)>=0))break;b+=T()}b.length<=2&&C({},j,"ILLEGAL");m<L&&(c=A[m],
V(c)&&C({},j,"ILLEGAL"));return{type:na,value:parseInt(b,16),lineNumber:M,lineStart:P,range:[a,m]}}else if(E(c)){for(b+=T();m<L;){c=A[m];if(!E(c))break;b+=T()}m<L&&(c=A[m],(V(c)||D(c))&&C({},j,"ILLEGAL"));return{type:na,value:parseInt(b,8),octal:!0,lineNumber:M,lineStart:P,range:[a,m]}}D(c)&&C({},j,"ILLEGAL")}for(;m<L;){c=A[m];if(!D(c))break;b+=T()}}if(c===".")for(b+=T();m<L;){c=A[m];if(!D(c))break;b+=T()}if(c==="e"||c==="E"){b+=T();c=A[m];if(c==="+"||c==="-")b+=T();c=A[m];if(D(c))for(b+=T();m<L;){c=
A[m];if(!D(c))break;b+=T()}else C({},j,"ILLEGAL")}m<L&&(c=A[m],V(c)&&C({},j,"ILLEGAL"));return{type:na,value:parseFloat(b),lineNumber:M,lineStart:P,range:[a,m]}}function jb(){var t="",c,a,d,i,p;d=!1;var j;ga=null;xa();a=m;c=A[m];Na(c==="/","Regular expression literal must start with a slash");for(t=T();m<L;)if(c=T(),t+=c,d)c==="]"&&(d=!1);else if(c==="\\")c=T(),J(c)&&C({},b),t+=c;else if(c==="/")break;else c==="["?d=!0:J(c)&&C({},b);t.length===1&&C({},b);d=t.substr(1,t.length-2);for(i="";m<L;){c=
A[m];if(!y(c))break;++m;if(c==="\\"&&m<L)if(c=A[m],c==="u")if(++m,j=m,c=ib("u")){i+=c;for(t+="\\u";j<m;++j)t+=A[j]}else m=j,i+="u",t+="\\u";else t+="\\";else i+=c,t+=c}try{p=RegExp(d,i)}catch(f){C({},s)}return{literal:t,value:p,range:[a,m]}}function Ta(){var b;xa();if(m>=L)return{type:fa,lineNumber:M,lineStart:P,range:[m,m]};b=Fb();if(typeof b!=="undefined")return b;b=A[m];if(b==="'"||b==='"'){b="";var c,a,d,i,p,f=!1;c=A[m];Na(c==="'"||c==='"',"String literal must starts with a quote");a=m;for(++m;m<
L;)if(d=T(),d===c){c="";break}else if(d==="\\")if(d=T(),J(d))++M,d==="\r"&&A[m]==="\n"&&++m;else switch(d){case "n":b+="\n";break;case "r":b+="\r";break;case "t":b+="\t";break;case "u":case "x":p=m;(i=ib(d))?b+=i:(m=p,b+=d);break;case "b":b+="\u0008";break;case "f":b+="\u000c";break;case "v":b+="\u000b";break;default:E(d)?(i="01234567".indexOf(d),i!==0&&(f=!0),m<L&&E(A[m])&&(f=!0,i=i*8+"01234567".indexOf(T()),"0123".indexOf(d)>=0&&m<L&&E(A[m])&&(i=i*8+"01234567".indexOf(T()))),b+=String.fromCharCode(i)):
b+=d}else if(J(d))break;else b+=d;c!==""&&C({},j,"ILLEGAL");return{type:ca,value:b,octal:f,lineNumber:M,lineStart:P,range:[a,m]}}if(b==="."||D(b))return Gb();b=Eb();if(typeof b!=="undefined")return b;C({},j,"ILLEGAL")}function F(){var b;if(ga)return m=ga.range[1],M=ga.lineNumber,P=ga.lineStart,b=ga,ga=null,b;ga=null;return Ta()}function da(){var b,c,a;if(ga!==null)return ga;b=m;c=M;a=P;ga=Ta();m=b;M=c;P=a;return ga}function Ua(){var b,c,a,d;b=m;c=M;a=P;xa();d=M!==c;m=b;M=c;P=a;return d}function C(b,
c){var a,d=Array.prototype.slice.call(arguments,2);a=c.replace(/%(\d)/g,function(b,c){return d[c]||""});typeof b.lineNumber==="number"?(a=Error("Line "+b.lineNumber+": "+a),a.index=b.range[0],a.end=b.range[1],a.token=b.value,a.lineNumber=b.lineNumber,a.column=b.range[0]-P+1):(a=Error("Line "+M+": "+a),a.index=m,a.lineNumber=M,a.column=m-P+1);throw a;}function Ia(){try{C.apply(null,arguments)}catch(b){if(n.errors)n.errors.push(b);else throw b;}}function ya(b){b.type===fa&&C(b,f);b.type===na&&C(b,v);
b.type===ca&&C(b,o);b.type===I&&C(b,r);b.type===Z&&(ba(b.value)?C(b,w):S&&Oa(b.value)&&C(b,z),C(b,j,b.value));C(b,j,b.value)}function G(b){var c=F();(c.type!==X||c.value!==b)&&ya(c)}function $(b){var c=F();(c.type!==Z||c.value!==b)&&ya(c)}function x(b){var c=da();return c.type===X&&c.value===b}function aa(b){var c=da();return c.type===Z&&c.value===b}function ja(){var b;if(A[m]===";")F();else if(b=M,xa(),M===b)if(x(";"))F();else if(b=da(),b.type!==fa&&!x("}")){if(n.errors){for(var c=m;c>0&&!(A[c]===
";"||A[c]==="\n");)c--;if(!(c<=n.statementStart)){var a=!1;n.lastRewindLocation?a=!0:n.lastRewindLocation!==c&&(a=!0);if(a)m=c,ga=null,n.lastRewindLocation=m}}ya(b)}}function Ab(b){switch(b.type){case "AssignmentExpression":case "BinaryExpression":case "ConditionalExpression":case "LogicalExpression":case "SequenceExpression":case "UnaryExpression":case "UpdateExpression":return!1}return!0}function Va(b,c){var a,d;a=S;d=Pa();c&&S&&ia(b[0].name)&&C(c,p);S=a;return{type:u.FunctionExpression,id:null,
params:b,body:d}}function Ja(){var b=F();return b.type===ca||b.type===na?(S&&b.octal&&C(b,i),Ca(b)):{type:u.Identifier,name:b.value}}function kb(){var b,c,a;b=da();if(b.type===I)return c=Ja(),b.value==="get"&&!x(":")?(c=Ja(),G("("),G(")"),{type:u.Property,key:c,value:Va([]),kind:"get"}):b.value==="set"&&!x(":")?(c=Ja(),G("("),b=da(),b.type!==I&&ya(F()),a=[pa()],G(")"),{type:u.Property,key:c,value:Va(a,b),kind:"set"}):(G(":"),{type:u.Property,key:c,value:ka(),kind:"init"});else if(b.type===fa||b.type===
X)ya(b);else return c=Ja(),G(":"),{type:u.Property,key:c,value:ka(),kind:"init"}}function Wa(){var b;b=da();var c=b.type;if(c===I)return{type:u.Identifier,name:F().value};if(c===ca||c===na)return S&&b.octal&&Ia(b,i),Ca(F());if(c===Z){if(aa("this"))return F(),{type:u.ThisExpression};if(aa("function"))return lb()}if(c===Ba)return F(),b.value=b.value==="true",Ca(b);if(c===Ha)return F(),b.value=null,Ca(b);if(x("[")){b=[];for(G("[");!x("]");)x(",")?(F(),b.push(void 0)):(b.push(ka()),x("]")||G(","));G("]");
return{type:u.ArrayExpression,elements:b}}if(x("{")){b=[];var a,p,j={},f=String;for(G("{");!x("}");)c=kb(),a=c.key.type===u.Identifier?c.key.name:f(c.key.value),p=c.kind==="init"?H:c.kind==="get"?Sa:va,Object.prototype.hasOwnProperty.call(j,a)?(j[a]===H?S&&p===H?Ia({},B):p!==H&&C({},Q):p===H?C({},Q):j[a]&p&&C({},K),j[a]|=p):j[a]=p,b.push(c),x("}")||G(",");G("}");return{type:u.ObjectExpression,properties:b}}return x("(")?(F(),d=b=W(),G(")"),b):x("/")||x("/=")?Ca(jb()):ya(F())}function Qa(b){for(var c=
n.errors.length,a=0;a<c;a++){var d=n.errors[a];if(d.index===b.index&&d.message===b.message)return}n.errors.push(b)}function Bb(){var b=[];G("(");if(!x(")"))for(;m<L;){b.push(ka());if(x(")"))break;try{G(",")}catch(c){if(n.errors){Qa(c);break}else throw c;}}try{G(")")}catch(a){if(n.errors)Qa(a);else throw a;}return b}function Ra(){var b,c,a=F();if(!(a.type===I||a.type===Z||a.type===Ba||a.type===Ha)){if(n.errors&&a.value&&a.type===X){b=m-a.value.length-1;var d=!1;c=!1;for(var i;!d;){i=A[b];if(i==="/")if(b>
2&&A[b-1]==="*"){b-=2;for(var p=!1;!p;)i=A[b],i==="*"?b>0&&A[b-1]==="/"&&(p=!0):i==="\n"&&(c=!0),b===0&&(p=!0),b--}else d=!0;else i==="\n"?c=!0:wa(i)||(d=!0);d||b--}d=A[b];!(d==="."&&c&&a.value==="(")&&d==="."&&(m=b+1,ga=null)}ya(a)}return{type:u.Identifier,name:a.value}}function Xa(b){return{type:u.MemberExpression,computed:!1,object:b,property:Ra()}}function Ya(b){var c;G("[");c=W();b={type:u.MemberExpression,computed:!0,object:b,property:c};G("]");return b}function mb(b){return{type:u.CallExpression,
callee:b,arguments:Bb()}}function Za(){var b;$("new");b=u.NewExpression;var c;for(c=aa("new")?Za():Wa();m<L;)if(x("."))F(),c=Xa(c);else if(x("["))c=Ya(c);else break;b={type:b,callee:c,arguments:[]};x("(")&&(b.arguments=Bb());return b}function nb(){var b;for(b=aa("new")?Za():Wa();m<L;)if(x("."))F(),b=Xa(b);else if(x("["))b=Ya(b);else if(x("("))b=mb(b);else break;if((x("++")||x("--"))&&!Ua())S&&b.type===u.Identifier&&ia(b.name)&&C({},N),b={type:u.UpdateExpression,operator:F().value,argument:b,prefix:!1};
return b}function Da(){var b,c;if(x("++")||x("--"))return b=F(),c=Da(),S&&c.type===u.Identifier&&ia(c.name)&&C({},U),c={type:u.UpdateExpression,operator:b.value,argument:c,prefix:!0};if(x("+")||x("-")||x("~")||x("!"))return c={type:u.UnaryExpression,operator:F().value,argument:Da()};return aa("delete")||aa("void")||aa("typeof")?(c={type:u.UnaryExpression,operator:F().value,argument:Da()},S&&c.operator==="delete"&&c.argument.type===u.Identifier&&Ia({},R),c):nb()}function $a(){for(var b=Da();x("*")||
x("/")||x("%");)b={type:u.BinaryExpression,operator:F().value,left:b,right:Da()};return b}function ab(){for(var b=$a();x("+")||x("-");)b={type:u.BinaryExpression,operator:F().value,left:b,right:$a()};return b}function ob(){for(var b=ab();x("<<")||x(">>")||x(">>>");)b={type:u.BinaryExpression,operator:F().value,left:b,right:ab()};return b}function Ea(){var b,c;c=e;e=!0;b=ob();e=c;x("<")||x(">")||x("<=")||x(">=")?b={type:u.BinaryExpression,operator:F().value,left:b,right:Ea()}:e&&aa("in")?(F(),b={type:u.BinaryExpression,
operator:"in",left:b,right:Ea()}):aa("instanceof")&&(F(),b={type:u.BinaryExpression,operator:"instanceof",left:b,right:Ea()});return b}function bb(){for(var b=Ea();x("==")||x("!=")||x("===")||x("!==");)b={type:u.BinaryExpression,operator:F().value,left:b,right:Ea()};return b}function cb(){for(var b=bb();x("&");)F(),b={type:u.BinaryExpression,operator:"&",left:b,right:bb()};return b}function db(){for(var b=cb();x("|");)F(),b={type:u.BinaryExpression,operator:"|",left:b,right:cb()};return b}function eb(){for(var b=
db();x("^");)F(),b={type:u.BinaryExpression,operator:"^",left:b,right:db()};return b}function fb(){for(var b=eb();x("&&");)F(),b={type:u.LogicalExpression,operator:"&&",left:b,right:eb()};return b}function pb(){for(var b=fb();x("||");)F(),b={type:u.LogicalExpression,operator:"||",left:b,right:fb()};return b}function qb(){var b,c,a;b=pb();x("?")&&(F(),c=e,e=!0,a=ka(),e=c,G(":"),b={type:u.ConditionalExpression,test:b,consequent:a,alternate:ka()});return b}function ka(){var b;b=qb();var c=da(),a=c.value;
if(c.type!==X?0:a==="="||a==="*="||a==="/="||a==="%="||a==="+="||a==="-="||a==="<<="||a===">>="||a===">>>="||a==="&="||a==="^="||a==="|=")d!==b&&!Ab(b)&&C({},O),S&&b.type===u.Identifier&&ia(b.name)&&C({},la),b={type:u.AssignmentExpression,operator:F().value,left:b,right:ka()};return b}function W(){var b=ka();if(x(","))for(b={type:u.SequenceExpression,expressions:[b]};m<L;){if(!x(","))break;F();b.expressions.push(ka())}return b}function Ka(){G("{");for(var b=[],c;m<L;){if(x("}"))break;c=gb();if(typeof c===
"undefined")break;b.push(c)}Cb();return{type:u.BlockStatement,body:b}}function pa(){var b=F();b.type!==I&&ya(b);return{type:u.Identifier,name:b.value}}function rb(b){var c=pa(),a=null;S&&ia(c.name)&&Ia({},qa);b==="const"?(G("="),a=ka()):x("=")&&(F(),a=ka());return{type:u.VariableDeclarator,id:c,init:a}}function xb(b){for(var c=[];m<L;){c.push(rb(b));if(!x(","))break;F()}return c}function sb(b){var c;$(b);c=xb(b);ja();return{type:u.VariableDeclaration,declarations:c,kind:b}}function yb(){try{G(")")}catch(b){if(n.errors){if(Qa(b),
A[b.index]==="{")m=b.index,ga=null}else throw b;}}function tb(){var b=F();return{type:u.VariableDeclaration,declarations:xb(),kind:b.value}}function Hb(){var b=null;$("continue");if(A[m]===";")return F(),k||C({},za),{type:u.ContinueStatement,label:null};if(Ua())return k||C({},za),{type:u.ContinueStatement,label:null};da().type===I&&(b=pa(),Object.prototype.hasOwnProperty.call(h,b.name)||C({},ea,b.name));ja();b===null&&!k&&C({},za);return{type:u.ContinueStatement,label:b}}function Ib(){var b=null;
$("break");if(A[m]===";")return F(),!k&&!c&&C({},Fa),{type:u.BreakStatement,label:null};if(Ua())return!k&&!c&&C({},Fa),{type:u.BreakStatement,label:null};da().type===I&&(b=pa(),Object.prototype.hasOwnProperty.call(h,b.name)||C({},ea,b.name));ja();b===null&&!k&&!c&&C({},Fa);return{type:u.BreakStatement,label:b}}function Jb(){var b,c=null;$("return");l||Ia({},La);if(A[m]===" "&&V(A[m+1]))return c=W(),ja(),{type:u.ReturnStatement,argument:c};if(Ua())return{type:u.ReturnStatement,argument:null};x(";")||
(b=da(),!x("}")&&b.type!==fa&&(c=W()));ja();return{type:u.ReturnStatement,argument:c}}function ub(){var b,c=[],a;aa("default")?(F(),b=null):($("case"),b=W());for(G(":");m<L;){if(x("}")||aa("default")||aa("case"))break;a=ha();if(typeof a==="undefined")break;c.push(a)}return{type:u.SwitchCase,test:b,consequent:c}}function vb(){var b;$("catch");G("(");x(")")||(b=W(),S&&b.type===u.Identifier&&ia(b.name)&&Ia({},oa));G(")");return{type:u.CatchClause,param:b,guard:null,body:Ka()}}function ha(){var b=da(),
a,i;b.type===fa&&ya(b);if(b.type===X)switch(b.value){case ";":return G(";"),{type:u.EmptyStatement};case "{":return Ka();case "(":return a=W(),ja(),{type:u.ExpressionStatement,expression:a}}if(b.type===Z)switch(b.value){case "break":return Ib();case "continue":return Hb();case "debugger":return $("debugger"),ja(),{type:u.DebuggerStatement};case "do":return $("do"),i=k,k=!0,a=ha(),k=i,$("while"),G("("),i=W(),G(")"),x(";")&&F(),{type:u.DoWhileStatement,body:a,test:i};case "for":var p,j,f,B,b=p=j=null;
$("for");G("(");x(";")?F():(aa("var")||aa("let")?(e=!1,b=tb(),e=!0,b.declarations.length===1&&aa("in")&&(F(),a=b,i=W(),b=null)):(e=!1,b=W(),e=!0,aa("in")&&(aa("in")&&d!==b&&!Ab(b)&&C({},sa),F(),a=b,i=W(),b=null)),typeof a==="undefined"&&G(";"));typeof a==="undefined"&&(x(";")||(p=W()),G(";"),x(")")||(j=W()));yb();B=k;k=!0;f=ha();k=B;return typeof a==="undefined"?{type:u.ForStatement,init:b,test:p,update:j,body:f}:{type:u.ForInStatement,left:a,right:i,body:f,each:!1};case "function":return hb();case "if":return $("if"),
G("("),a=W(),yb(),(i=ha())||(i=null),aa("else")?(F(),b=ha()):b=null,{type:u.IfStatement,test:a,consequent:i,alternate:b};case "return":return Jb();case "switch":$("switch");G("(");a=W();G(")");G("{");if(x("}"))F(),a={type:u.SwitchStatement,discriminant:a};else{i=[];b=c;for(c=!0;m<L;){if(x("}"))break;i.push(ub())}c=b;G("}");a={type:u.SwitchStatement,discriminant:a,cases:i}}return a;case "throw":return $("throw"),Ua()&&C({},Ga),a=W(),ja(),{type:u.ThrowStatement,argument:a};case "try":return i=[],b=
null,$("try"),a=Ka(),aa("catch")&&i.push(vb()),aa("finally")&&(F(),b=Ka()),i.length===0&&!b&&C({},ta),{type:u.TryStatement,block:a,handlers:i,finalizer:b};case "var":return $("var"),a=xb(),ja(),{type:u.VariableDeclaration,declarations:a,kind:"var"};case "while":return $("while"),G("("),a=W(),yb(),b=k,k=!0,i=ha(),k=b,{type:u.WhileStatement,test:a,body:i};case "with":return S&&Ia({},Ma),$("with"),G("("),a=W(),G(")"),i=ha(),{type:u.WithStatement,object:a,body:i}}if((a=W())&&a.type===u.Identifier&&x(":"))return F(),
Object.prototype.hasOwnProperty.call(h,a.name)&&C({},ua,"Label",a.name),h[a.name]=!0,i=ha(),delete h[a.name],{type:u.LabeledStatement,label:a,body:i};ja();return{type:u.ExpressionStatement,expression:a}}function Cb(){if(n.errors)try{G("}")}catch(b){Qa(b)}else G("}")}function Pa(){var b,a=[],d,p,j,f;for(G("{");m<L;){d=da();if(d.type!==ca)break;b=gb();a.push(b);if(b.expression.type!==u.Literal)break;b=Y(d.range[0]+1,d.range[1]-1);b==="use strict"?(S=!0,p&&C(p,i)):!p&&d.octal&&(p=d)}d=h;p=k;j=c;f=l;
h={};c=k=!1;for(l=!0;m<L;){if(x("}"))break;b=gb();if(typeof b==="undefined")break;a.push(b)}Cb();h=d;k=p;c=j;l=f;return{type:u.BlockStatement,body:a}}function hb(){var b,c,a=[],d,i,j,f;$("function");d=da();b=pa();S?ia(d.value)&&C(d,ma):ia(d.value)?(i=d,j=ma):Oa(d.value)&&(i=d,j=z);G("(");if(!x(")"))for(f={};m<L;){d=da();c=pa();S?(ia(d.value)&&C(d,p),Object.prototype.hasOwnProperty.call(f,d.value)&&C(d,Aa)):i||(ia(d.value)?(i=d,j=p):Oa(d.value)?(i=d,j=z):Object.prototype.hasOwnProperty.call(f,d.value)&&
(i=d,j=Aa));a.push(c);f[c.name]=!0;if(x(")"))break;G(",")}G(")");d=S;c=Pa();S&&i&&C(i,j);S=d;return{type:u.FunctionDeclaration,id:b,params:a,body:c}}function lb(){var b,c=null,a,d,i,j=[],f;$("function");x("(")||(b=da(),c=pa(),S?ia(b.value)&&C(b,ma):ia(b.value)?(a=b,d=ma):Oa(b.value)&&(a=b,d=z));G("(");if(!x(")"))for(f={};m<L;){b=da();i=pa();S?(ia(b.value)&&C(b,p),Object.prototype.hasOwnProperty.call(f,b.value)&&C(b,Aa)):a||(ia(b.value)?(a=b,d=p):Oa(b.value)?(a=b,d=z):Object.prototype.hasOwnProperty.call(f,
b.value)&&(a=b,d=Aa));j.push(i);f[i.name]=!0;if(x(")"))break;G(",")}G(")");i=S;b=Pa();S&&a&&C(a,d);S=i;return{type:u.FunctionExpression,id:c,params:j,body:b}}function gb(){var b=da();if(b.type===Z)switch(b.value){case "const":case "let":return sb(b.value);case "function":return hb();default:return ha()}if(b.type!==fa)return ha()}function wb(){S=!1;for(var b=u.Program,c,a=[],d,p;m<L;){d=da();if(d.type!==ca)break;c=gb();a.push(c);if(c.expression.type!==u.Literal)break;c=Y(d.range[0]+1,d.range[1]-1);
c==="use strict"?(S=!0,p&&C(p,i)):!p&&d.octal&&(p=d)}for(;m<L;){c=gb();if(typeof c==="undefined")break;a.push(c)}return{type:b,body:a}}function zb(b,c,a,d){Na(typeof b==="number","Comment must have valid position");n.comments.length>0&&n.comments[n.comments.length-1].range[1]>b||n.comments.push({range:[b,c],type:a,value:d})}function Kb(){var b,c,a,d,i;b="";for(i=d=!1;m<L;)if(c=A[m],i)c=T(),m>=L?(i=!1,b+=c,zb(a,m,"Line",b)):J(c)?(i=!1,zb(a,m,"Line",b),c==="\r"&&A[m]==="\n"&&++m,++M,P=m,b=""):b+=c;
else if(d)J(c)?(c==="\r"&&A[m+1]==="\n"?(++m,b+="\r\n"):b+=c,++M,++m,P=m,m>=L&&C({},j,"ILLEGAL")):(c=T(),m>=L&&C({},j,"ILLEGAL"),b+=c,c==="*"&&(c=A[m],c==="/"&&(b=b.substr(0,b.length-1),d=!1,++m,zb(a,m,"Block",b),b="")));else if(c==="/")if(c=A[m+1],c==="/")a=m,m+=2,i=!0;else if(c==="*")a=m,m+=2,d=!0,m>=L&&C({},j,"ILLEGAL");else break;else if(wa(c))++m;else if(J(c))++m,c==="\r"&&A[m]==="\n"&&++m,++M,P=m;else break}function Lb(){var b=n.advance(),c,a;b.type!==fa&&(c=[b.range[0],b.range[1]],a=Y(b.range[0],
b.range[1]),n.tokens.push({type:ra[b.type],value:a,range:c}));return b}function Mb(){var b,c,a;xa();b=m;c=n.scanRegExp();n.tokens.length>0&&(a=n.tokens[n.tokens.length-1],a.range[0]===b&&a.type==="Punctuator"&&(a.value==="/"||a.value==="/=")&&n.tokens.pop());n.tokens.push({type:"RegularExpression",value:c.literal,range:[b,m]});return c}function Ca(b){return{type:u.Literal,value:b.value}}function Nb(b){return{type:u.Literal,value:b.value,raw:Y(b.range[0],b.range[1])}}function Ob(b,c){return function(a){function d(b){return b.type===
u.LogicalExpression||b.type===u.BinaryExpression}function i(a){d(a.left)&&i(a.left);d(a.right)&&i(a.right);if(b&&typeof a.range==="undefined")a.range=[a.left.range[0],a.right.range[1]];if(c&&typeof a.loc==="undefined")a.loc={start:a.left.loc.start,end:a.right.loc.end}}return function(){var p,j,f;xa();j=[m,0];f={start:{line:M,column:m-P}};p=a.apply(null,arguments);if(typeof p!=="undefined"){if(b)j[1]=m,p.range=j;if(c)f.end={line:M,column:m-P},p.loc=f;d(p)&&i(p);if(p.type===u.MemberExpression&&(typeof p.object.range!==
"undefined"&&(p.range[0]=p.object.range[0]),typeof p.object.loc!=="undefined"))p.loc.start=p.object.loc.start;return p}}}}function Pb(){function b(c){return function(){try{return c.apply(null,arguments)}catch(b){return Qa(b),null}}}function c(b){return function(){n.statementStart=m;try{return b.apply(null,arguments)}catch(c){Qa(c)}}}var a;if(n.comments)n.skipComment=xa,xa=Kb;if(n.raw)n.createLiteral=Ca,Ca=Nb;if(n.range||n.loc||n.errors)a=Ob(n.range,n.loc),n.parseAdditiveExpression=ab,n.parseAssignmentExpression=
ka,n.parseBitwiseANDExpression=cb,n.parseBitwiseORExpression=db,n.parseBitwiseXORExpression=eb,n.parseBlock=Ka,n.parseFunctionSourceElements=Pa,n.parseCallMember=mb,n.parseCatchClause=vb,n.parseComputedMember=Ya,n.parseConditionalExpression=qb,n.parseConstLetDeclaration=sb,n.parseEqualityExpression=bb,n.parseExpression=W,n.parseForVariableDeclaration=tb,n.parseFunctionDeclaration=hb,n.parseFunctionExpression=lb,n.parseLogicalANDExpression=fb,n.parseLogicalORExpression=pb,n.parseMultiplicativeExpression=
$a,n.parseNewExpression=Za,n.parseNonComputedMember=Xa,n.parseNonComputedProperty=Ra,n.parseObjectProperty=kb,n.parseObjectPropertyKey=Ja,n.parsePostfixExpression=nb,n.parsePrimaryExpression=Wa,n.parseProgram=wb,n.parsePropertyFunction=Va,n.parseRelationalExpression=Ea,n.parseStatement=ha,n.parseShiftExpression=ob,n.parseSwitchCase=ub,n.parseUnaryExpression=Da,n.parseVariableDeclaration=rb,n.parseVariableIdentifier=pa,n.consumeSemicolon=ja,ab=a(n.parseAdditiveExpression),ka=a(n.parseAssignmentExpression),
cb=a(n.parseBitwiseANDExpression),db=a(n.parseBitwiseORExpression),eb=a(n.parseBitwiseXORExpression),Ka=a(n.parseBlock),Pa=a(n.parseFunctionSourceElements),mb=a(n.parseCallMember),vb=a(n.parseCatchClause),Ya=a(n.parseComputedMember),qb=a(n.parseConditionalExpression),sb=a(n.parseConstLetDeclaration),bb=a(n.parseEqualityExpression),W=a(n.parseExpression),tb=a(n.parseForVariableDeclaration),hb=a(n.parseFunctionDeclaration),lb=a(n.parseFunctionExpression),fb=a(n.parseLogicalANDExpression),pb=a(n.parseLogicalORExpression),
$a=a(n.parseMultiplicativeExpression),Za=a(n.parseNewExpression),Xa=a(n.parseNonComputedMember),Ra=a(n.parseNonComputedProperty),kb=a(n.parseObjectProperty),Ja=a(n.parseObjectPropertyKey),nb=a(n.parsePostfixExpression),Wa=a(n.parsePrimaryExpression),wb=a(n.parseProgram),Va=a(n.parsePropertyFunction),Ea=a(n.parseRelationalExpression),ha=a(n.parseStatement),ob=a(n.parseShiftExpression),ub=a(n.parseSwitchCase),Da=a(n.parseUnaryExpression),rb=a(n.parseVariableDeclaration),pa=a(n.parseVariableIdentifier);
n.errors&&(ha=c(ha),W=b(W),Ra=b(Ra),ja=b(ja));if(typeof n.tokens!=="undefined")n.advance=Ta,n.scanRegExp=jb,Ta=Lb,jb=Mb}var ra,u,A,S,m,M,P,L,ga,n;Ba=1;fa=2;I=3;Z=4;Ha=5;na=6;X=7;ca=8;ra={};ra[Ba]="Boolean";ra[fa]="<end>";ra[I]="Identifier";ra[Z]="Keyword";ra[Ha]="Null";ra[na]="Numeric";ra[X]="Punctuator";ra[ca]="String";u={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",
CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",
LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",
VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"};H=1;Sa=2;va=4;j="Unexpected token %0";v="Unexpected number";o="Unexpected string";r="Unexpected identifier";w="Unexpected reserved word";f="Unexpected end of input";Ga="Illegal newline after throw";s="Invalid regular expression";b="Invalid regular expression: missing /";O="Invalid left-hand side in assignment";sa="Invalid left-hand side in for-in";ta="Missing catch or finally after try";ea="Undefined label '%0'";
ua="%0 '%1' has already been declared";za="Illegal continue statement";Fa="Illegal break statement";La="Illegal return statement";Ma="Strict mode code may not include a with statement";oa="Catch variable may not be eval or arguments in strict mode";qa="Variable name may not be eval or arguments in strict mode";p="Parameter name eval or arguments is not allowed in strict mode";Aa="Strict mode function may not have duplicate parameter names";ma="Function name may not be eval or arguments in strict mode";
i="Octal literals are not allowed in strict mode.";R="Delete of an unqualified identifier in strict mode.";B="Duplicate data property in object literal not allowed in strict mode";Q="Object literal may not have data and accessor property with the same name";K="Object literal may not have multiple get/set accessors with the same name";la="Assignment to eval or arguments is not allowed in strict mode";N="Postfix increment/decrement may not have eval or arguments operand in strict mode";U="Prefix increment/decrement may not have eval or arguments operand in strict mode";
z="Use of future reserved word in strict mode";g=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
q=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
typeof"esprima"[0]==="undefined"&&(Y=function(b,c){return A.slice(b,c).join("")});a.version="1.0.0-dev";a.parse=function(b,a){var i;typeof b!=="string"&&!(b instanceof String)&&(b=String(b));A=b;m=0;M=A.length>0?1:0;P=0;L=A.length;ga=null;e=!0;h={};d=null;l=!1;k=!1;c=!1;n={};if(typeof a!=="undefined"){n.range=typeof a.range==="boolean"&&a.range;n.loc=typeof a.loc==="boolean"&&a.loc;n.raw=typeof a.raw==="boolean"&&a.raw;if(typeof a.tokens==="boolean"&&a.tokens)n.tokens=[];if(typeof a.comment==="boolean"&&
a.comment)n.comments=[];if(typeof a.tolerant==="boolean"&&a.tolerant)n.errors=[]}if(L>0&&typeof A[0]==="undefined"&&(b instanceof String&&(A=b.valueOf()),typeof A[0]==="undefined")){var p=b,j=p.length,f=[],B;for(B=0;B<j;++B)f[B]=p.charAt(B);A=f}Pb();try{i=wb();if(typeof n.comments!=="undefined")i.comments=n.comments;if(typeof n.tokens!=="undefined")i.tokens=n.tokens;if(typeof n.errors!=="undefined")i.errors=n.errors}catch(s){throw s;}finally{if(typeof n.skipComment==="function")xa=n.skipComment;if(n.raw)Ca=
n.createLiteral;if(n.range||n.loc||n.errors)ab=n.parseAdditiveExpression,ka=n.parseAssignmentExpression,cb=n.parseBitwiseANDExpression,db=n.parseBitwiseORExpression,eb=n.parseBitwiseXORExpression,Ka=n.parseBlock,Pa=n.parseFunctionSourceElements,mb=n.parseCallMember,vb=n.parseCatchClause,Ya=n.parseComputedMember,qb=n.parseConditionalExpression,sb=n.parseConstLetDeclaration,bb=n.parseEqualityExpression,W=n.parseExpression,tb=n.parseForVariableDeclaration,hb=n.parseFunctionDeclaration,lb=n.parseFunctionExpression,
fb=n.parseLogicalANDExpression,pb=n.parseLogicalORExpression,$a=n.parseMultiplicativeExpression,Za=n.parseNewExpression,Xa=n.parseNonComputedMember,Ra=n.parseNonComputedProperty,kb=n.parseObjectProperty,Ja=n.parseObjectPropertyKey,Wa=n.parsePrimaryExpression,nb=n.parsePostfixExpression,wb=n.parseProgram,Va=n.parsePropertyFunction,Ea=n.parseRelationalExpression,ha=n.parseStatement,ob=n.parseShiftExpression,ub=n.parseSwitchCase,Da=n.parseUnaryExpression,rb=n.parseVariableDeclaration,pa=n.parseVariableIdentifier,
ja=n.consumeSemicolon;if(typeof n.scanRegExp==="function")Ta=n.advance,jb=n.scanRegExp;n={}}return i};a.Syntax=function(){var b,a={};typeof Object.create==="function"&&(a=Object.create(null));for(b in u)u.hasOwnProperty(b)&&(a[b]=u[b]);typeof Object.freeze==="function"&&Object.freeze(a);return a}()})(typeof exports==="undefined"?esprima={}:exports);define("esprima",function(){});
(function(a,d){typeof define==="function"&&define.amd?define("orion/Deferred",d):typeof exports==="object"?module.exports=d():(a.orion=a.orion||{},a.orion.Deferred=d())})(this,function(){function a(){for(var a;a=h.shift();)a();c=!1}function d(d){h.push(d);c||(c=!0,setTimeout(a,0))}function e(a){return function(){a.apply(void 0,arguments)}}function k(){function a(){for(var c;c=f.shift();){var d=c.deferred,j=s==="fulfilled"?"resolve":"reject";if(typeof c[j]==="function")try{var p=(0,c[j])(b),i=p&&(typeof p===
"object"||typeof p==="function")&&p.then;if(typeof i==="function")if(p===d.promise)d.reject(new TypeError);else{var B=p.cancel;typeof B==="function"?d._protected(h).parentCancel=B.bind(p):delete d._protected(h).parentCancel;i.call(p,e(d.resolve),e(d.reject),e(d.progress))}else d.resolve(p)}catch(Q){d.reject(Q)}else d[j](b)}}function c(j){delete o.parentCancel;s="rejected";b=j;f.length&&d(a)}function q(j){function e(b){return function(a){z||(z=!0,b(a))}}var z=!1;delete o.parentCancel;try{var p=j&&
(typeof j==="object"||typeof j==="function")&&j.then;if(typeof p==="function")if(j===v)c(new TypeError);else{s="assumed";var i=j&&j.cancel;if(typeof i!=="function"){var B=new k,j=B.promise;try{p(B.resolve,B.reject,B.progress)}catch(Q){B.reject(Q)}i=j.cancel;p=j.then}b=j;p.call(j,e(q),e(c));o.parentCancel=i.bind(j)}else s="fulfilled",b=j,f.length&&d(a)}catch(K){e(c)(K)}}function j(){var b=o.parentCancel;if(b)delete o.parentCancel,b();else if(!s)b=Error("Cancel"),b.name="Cancel",c(b)}var b,s,f=[],v=
this,o={};Object.defineProperty(this,"_protected",{value:function(b){if(b!==h)throw Error("protected");return o}});this.resolve=function(b){s||q(b);return v};this.reject=function(b){s||c(b);return v};this.progress=function(b){s||f.forEach(function(a){if(a.progress)try{a.progress(b)}catch(c){}});return v.promise};this.cancel=function(){o.parentCancel?setTimeout(j,0):j();return v};this.then=function(b,c,j){b={resolve:b,reject:c,progress:j,deferred:new k};f.push(b);b.deferred._protected(h).parentCancel=
v.promise.cancel.bind(v);(s==="fulfilled"||s==="rejected")&&d(a);return b.deferred.promise};this.promise={then:v.then,cancel:v.cancel}}var h=[],c=!1;k.all=function(a,c){function d(a,c){f||(s[a]=c,--b===0&&e.resolve(s))}function j(b,a){if(!f){if(c)try{d(b,c(a));return}catch(j){a=j}e.reject(a)}}var b=a.length,s=[],f=!1,e=new k;e.then(void 0,function(){f=!0;a.forEach(function(b){b.cancel&&b.cancel()})});b===0?e.resolve(s):a.forEach(function(b,a){b.then(d.bind(void 0,a),j.bind(void 0,a))});return e.promise};
k.when=function(a,c,d,j){var b;if(!(a&&typeof a.then==="function"))b=new k,b.resolve(a),a=b.promise;return a.then(c,d,j)};return k});
define("orion/objects",[],function(){function a(a){for(var e=1;e<arguments.length;e++){var k=arguments[e],h;for(h in k)Object.prototype.hasOwnProperty.call(k,h)&&(a[h]=k[h])}return a}return{clone:function(d){if(Array.isArray(d))return Array.prototype.slice.call(d);var e=Object.create(Object.getPrototypeOf(d));a(e,d);return e},mixin:a,toArray:function(a){return Array.isArray(a)?a:[a]}}});
define("orion/serialize",[],function(){return{serializeError:function(a){var d=a?JSON.parse(JSON.stringify(a)):a;if(a instanceof Error)d.__isError=!0,d.message=d.message||a.message,d.name=d.name||a.name,d.stack=d.stack||a.stack;return d}}});
define("javascript/astManager",["esprima","orion/Deferred","orion/objects","orion/serialize"],function(a,d,e,k){function h(){this.cache=null}var c={Unexpected:1,EndOfInput:2};e.mixin(h.prototype,{getAST:function(a){if(this.cache)return(new d).resolve(this.cache);var c=this;return a.getText().then(function(a){a=c.parse(a);return c.cache=a})},parse:function(a){try{var c=esprima.parse(a,{range:!0,tolerant:!0,comment:!0,tokens:!0})}catch(d){c=this._emptyAST(a),c.errors=[d]}if(c.errors)this._computeErrorTypes(c.errors),
c.errors=c.errors.map(k.serializeError);return c},_emptyAST:function(a){return{type:"Program",body:[],comments:[],tokens:[],range:[0,a&&typeof a.length==="number"?a.length:0]}},_computeErrorTypes:function(a){a&&Array.isArray(a)&&a.forEach(function(a){var d=a.message;a.message=d=d.replace(/^Line \d+: /,"");if(/^Unexpected/.test(d)&&(a.type=c.Unexpected,/end of input$/.test(d)))a.type=c.EndOfInput})},updated:function(){this.cache=null}});return{ASTManager:h,ErrorTypes:c}});
define("javascript/contentAssist/indexFiles/mongodbIndex",[],function(){return{"!name":"mongodb","this":"<top>",global:"<top>",mongodb:"mongodb",MongoClient:"mongodb.MongoClient",Db:"mongodb.Db","!define":{mongodb:{MongoClient:{"!proto":"Object","!type":"fn(serverConfig: Object, options: Object)",prototype:{connect:{"!type":"fn(url: String, options: Object, callback: fn())"},open:{"!type":"fn(callback: fn())"},close:{"!type":"fn(callback: fn())"},db:{"!type":"fn(dbName: String) -> Db"}},connect:{"!type":"fn(url: String, options: Object, callback: fn())"}},
Db:{"!proto":"Object","!type":"fn(databaseName: String, serverConfig: Object, options: Object)",prototype:{addUser:{"!type":"fn(username: String, password: String, options: Object, callback: fn())"},admin:{"!type":"fn(callback: fn())"},authenticate:{"!type":"fn(username: String, password: String, options: Object, callback: fn())"},close:{"!type":"fn(forceClose: Boolean, callback: fn())"},createCollection:{"!type":"fn(collectionName: String, options: Object, callback: fn())"},createIndex:{"!type":"fn(collectionName: String, fieldOrSpec: Object, options: Object, callback: fn())"},
command:{"!type":"fn(selector: Object, options: Object, callback: fn())"},collection:{"!type":"fn(collectionName: String, options: Object, callback: fn())"},collectionsInfo:{"!type":"fn(collectionName: String, callback: fn())"},collectionNames:{"!type":"fn(collectionName: String, options: Object, callback: fn())"},collections:{"!type":"fn(callback: fn())"},cursorInfo:{"!type":"fn(options: Object, callback: fn())"},db:{"!type":"fn(dbName: String) -> Db"},dereference:{"!type":"fn(dbRef: DBRef, callback: fn())"},
dropCollection:{"!type":"fn(collectionName: String, callback: fn())"},dropDatabase:{"!type":"fn(callback: fn())"},dropIndex:{"!type":"fn(collectionName: String, indexName: String, callback: fn())"},ensureIndex:{"!type":"fn(collectionName: String, fieldOrSpec: Object, options: Object, callback: fn())"},executeDbAdminCommand:{"!type":"fn(command_hash: String, options: Object, callback: fn())"},executeDbCommand:{"!type":"fn(command_hash: String, options: Object, callback: fn())"},eval:{"!type":"fn(code: Code, parameters: Object, options: Object, callback: fn())"},
indexInformation:{"!type":"fn(collectionName: String, options: Object, callback: fn())"},logout:{"!type":"fn(options: Object, callback: fn())"},open:{"!type":"fn(callback: fn())"},reIndex:{"!type":"fn(collectionName: String, callback: fn())"},removeAllEventListeners:{"!type":"fn()"},renameCollection:{"!type":"fn(fromCollection: String, toCollection: String, options: Object, callback: fn())"},removeUser:{"!type":"fn(username: String, options: Object, callback: fn())"},stats:{"!type":"fn(options: Object, callback: fn())"}},
connect:{"!type":"fn(url: String, options: Object, callback: fn())"},DEFAULT_URL:"String",wrap:{"!type":"fn()"}}}}}});
define("javascript/contentAssist/indexFiles/mysqlIndex",[],function(){return{"!name":"mysql","this":"<top>",global:"<top>",mysql:"mysql",Types:"mysql.Types",Connection:"Connection",Pool:"Pool",PoolCluster:"PoolCluster",Query:"Query","!define":{mysql:{createConnection:{"!type":"fn(config: Object) -> +Connection"},createPool:{"!type":"fn(config: Object) -> +Pool"},createPoolCluster:{"!type":"fn(config: Object) -> +PoolCluster"},createQuery:{"!type":"fn(sql: String, values: Object, cb: fn()) -> +Query"},
escape:{"!type":"fn(val: String, stringifyObjects: Boolean, timeZone: String) -> String"},escapeId:{"!type":"fn(val: String, forbidQualified: Boolean) -> String"},format:{"!type":"fn(sql: String, values: [String], stringifyObjects: Boolean, timeZone: String) -> String"},Types:{"!proto":"Object",DECIMAL:"Number",TINY:"Number",SHORT:"Number",LONG:"Number",FLOAT:"Number",DOUBLE:"Number",NULL:"Number",TIMESTAMP:"Number",LONGLONG:"Number",INT24:"Number",DATE:"Number",TIME:"Number",DATETIME:"Number",YEAR:"Number",
NEWDATE:"Number",VARCHAR:"Number",BIT:"Number",NEWDECIMAL:"Number",ENUM:"Number",SET:"Number",TINY_BLOB:"Number",MEDIUM_BLOB:"Number",LONG_BLOB:"Number",BLOB:"Number",VAR_STRING:"Number",STRING:"Number",GEOMETRY:"Number"}},Connection:{"!proto":"EventEmitter","!type":"fn(options: Object)",createQuery:{"!type":"fn(sql: String, values: Object, cb: fn()) -> +Query"},prototype:{connect:{"!type":"fn(cb: fn())"},changeUser:{"!type":"fn(options: Object, cb: fn()) -> Object"},beginTransaction:{"!type":"fn(cb: fn()) -> Object"},
commit:{"!type":"fn(cb: fn()) -> Object"},rollback:{"!type":"fn(cb: fn()) -> Object"},query:{"!type":"fn(sql: Object, values: Object, cb: fn()) -> Object"},ping:{"!type":"fn(cb: fn())"},statistics:{"!type":"fn(cb: fn())"},end:{"!type":"fn(cb: fn())"},destroy:{"!type":"fn()"},pause:{"!type":"fn()"},resume:{"!type":"fn()"},escape:{"!type":"fn(value: String) -> String"},format:{"!type":"fn(sql: Object, values: [String]) -> String"}}},Pool:{"!proto":"EventEmitter","!type":"fn(options: Object)",prototype:{getConnection:{"!type":"fn(cb: fn(err: Error, conn: Connection))"},
releaseConnection:{"!type":"fn(connection: Connection)"},end:{"!type":"fn(cb: fn(err: Error)) -> Object"},query:{"!type":"fn(sql: String, values: Object, cb: fn())"},escape:{"!type":"fn(value: String) -> String"}}},PoolCluster:{"!proto":"Object","!type":"fn(config: Object)",prototype:{of:{"!type":"fn(pattern: String, selector: String) -> Object"},add:{"!type":"fn(id: String, config: String)"},getConnection:{"!type":"fn(pattern: String, selector: String, cb: fn())"},end:{"!type":"fn()"}}},Query:{"!proto":"Sequence",
"!type":"fn(options: Object, callback: fn())",prototype:{start:{"!type":"fn()"},determinePacket:{"!type":"fn(firstByte: Number, parser: Object)"},OkPacket:{"!type":"fn(packet: Object)"},ErrorPacket:{"!type":"fn(packet: Object)"},ResultSetHeaderPacket:{"!type":"fn(packet: Object)"},FieldPacket:{"!type":"fn(packet: Object)"},EofPacket:{"!type":"fn(packet: Object)"},RowDataPacket:{"!type":"fn(packet: Object, parser: Parser, connection: Connection)"},stream:{"!type":"fn(options: Object) -> Object"}}},
Sequence:{"!proto":"Object","!type":"fn(callback: fn())",determinePacket:{"!type":"fn(byte: Number)"},prototype:{hasErrorHandler:{"!type":"fn() -> Boolean"},end:{"!type":"fn(err: Error)"},OkPacket:{"!type":"fn(packet: Object)"},ErrorPacket:{"!type":"fn(packet: Object)"},start:{"!type":"fn()"}}}}}});
define("javascript/contentAssist/indexFiles/postgresIndex",[],function(){return{"!name":"pg","this":"<top>",global:"<top>",pg:"pg",PG:"pg.PG",Client:"pg.Client",Connection:"pg.Connection",Error:"pg.Error",Query:"pg.Query",Types:"pg.Types",Defaults:"pg.Defaults","!define":{pg:{PG:{"!proto":"EventEmitter","!type":"fn(config: Object)",prototype:{end:{"!type":"fn()"},connect:{"!type":"fn(config: Object, callback: fn())"},cancel:{"!type":"fn(config: Object, client: Client, query: Query)"}},Client:"Client",
Query:"Query",pools:"Pool",types:"Types",Connection:"Connection",defaults:"Defaults"},Client:{"!proto":"EventEmitter","!type":"fn(config: Object)",prototype:{connect:{"!type":"fn(callback: fn(err:Error))"},getStartupConf:{"!type":"fn() -> Object"},cancel:{"!type":"fn(client: Client, query: Query)"},escapeIdentifier:{"!type":"fn(str: String) -> String"},escapeLiteral:{"!type":"fn(str: String) -> String"},copyFrom:{"!type":"fn(text: String)"},copyTo:{"!type":"fn(text: String)"},query:{"!type":"fn(config: Object, values: Object, callback: fn()) -> Object"},
end:{"!type":"fn()"}},md5:"fn(string: String)"},Connection:{"!proto":"EventEmitter","!type":"fn(config: Object)",prototype:{connect:{"!type":"fn(port: Number, host: String)"},attachListeners:{"!type":"fn(stream: Object)"},requestSsl:{"!type":"fn(config: Object)"},startup:{"!type":"fn(config: Object)"},cancel:{"!type":"fn(processID: Number, secretKey: String)"},password:{"!type":"fn(password: String)"},query:{"!type":"fn(text: String)"},parse:{"!type":"fn(query: Query, more: Object)"},bind:{"!type":"fn(config: Object, more: Object)"},
execute:{"!type":"fn(config: Object, more: Object)"},flush:{"!type":"fn()"},sync:{"!type":"fn()"},end:{"!type":"fn()"},describe:{"!type":"fn(msg: Message, more: Object)"},sendCopyFromChunk:{"!type":"fn(chunk: Object)"},endCopyFrom:{"!type":"fn()"},sendCopyFail:{"!type":"fn(msg: Message)"},setBuffer:{"!type":"fn(buffer: Buffer)"},readSslResponse:{"!type":"fn()"},parseMessage:{"!type":"fn() -> Boolean"},parseR:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseS:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},
parseK:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseC:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseZ:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseT:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseField:{"!type":"fn(buffer: Buffer) -> Object"},parseD:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseE:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseN:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},
parseA:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseG:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseH:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseGH:{"!type":"fn(buffer: Buffer, msg: String) -> Message"},parsed:{"!type":"fn(buffer: Buffer, length: Number) -> Message"},parseInt32:{"!type":"fn(buffer: Buffer) -> Number"},parseInt16:{"!type":"fn(buffer: Buffer) -> Number"},readString:{"!type":"fn(buffer: Buffer, length: Number) -> String"},readBytes:{"!type":"fn(buffer: Buffer, length: Number) -> Buffer"},
parseCString:{"!type":"fn(buffer: Buffer) -> String"}}},Error:{"!proto":"Object",name:"String",length:"Number",salt:"Buffer",parameterName:"String",parameterValue:"String",processID:"Number",secretKey:"Number",text:"String",status:"String",fieldCount:"Number",fields:"[Object]",processId:"Number",channel:"String",payload:"String",binary:"Boolean",columnTypes:"[Number]",chunk:"Buffer"},Query:{"!proto":"EventEmitter","!type":"fn(config: Object, values: Object, callback: fn()) -> Query",prototype:{requiresPreparation:{"!type":"fn() -> Boolean"},
handleRowDescription:{"!type":"fn(msg: Message)"},handleDataRow:{"!type":"fn(msg: Message)"},handleCommandComplete:{"!type":"fn(msg: Message, con: Connection)"},handleReadyForQuery:{"!type":"fn()"},handleError:{"!type":"fn(err: Boolean, connection: Connection)"},submit:{"!type":"fn(connection: Connection)"},hasBeenParsed:{"!type":"fn(connection: Connection) -> String"},handlePortalSuspended:{"!type":"fn(connection: Connection)"},prepare:{"!type":"fn(connection: Connection)"},handleCopyInResponse:{"!type":"fn(connection: Connection)"},
handleCopyData:{"!type":"fn(msg: Message, connection: Connection)"}},portal:{"!type":"String"},isPreparedStatement:{"!type":"Boolean"}},Types:{"!proto":"Object",getTypeParser:{"!type":"fn(oid: String, format: Object) -> Object"},setTypeParser:{"!type":"fn(oid: String, format: String, parseFn: fn())"}},Pool:{"!proto":"Object",all:"Object",getOrCreate:"fn(clientConfig: Object)"},Defaults:{"!proto":"Object",host:{"!type":"String"},port:{"!type":"Number"},rows:{"!type":"Number"},binary:{"!type":"Boolean"},
poolSize:{"!type":"Number"},poolIdleTimeout:{"!type":"Number"},reapIntervalMillis:{"!type":"Number"},poolLog:{"!type":"Boolean"},client_encoding:"String",ssl:"Boolean"}}}}});
define("javascript/contentAssist/indexFiles/redisIndex",[],function(){return{"!name":"redis","this":"<top>",global:"<top>",redis:"redis",RedisClient:"redis.RedisClient",Multi:"redis.Multi",commands:"Commands","!define":{redis:{debug_mode:{"!type":"Boolean"},createClient:{"!type":"fn(port_arg: Number, host_arg: String, options: Object) -> +redis.RedisClient"},print:{"!type":"fn(err: Error, reply: Object)"},RedisClient:{"!type":"fn(stream: Object, options: Object)",prototype:{initialize_retry_vars:{"!type":"fn()"},
unref:{"!type":"fn()"},flush_and_error:{"!type":"fn(message: String)"},on_error:{"!type":"fn(msg: String)"},do_auth:{"!type":"fn()"},on_connect:{"!type":"fn()"},init_parser:{"!type":"fn()"},on_ready:{"!type":"fn()"},on_info_cmd:{"!type":"fn(err: Error, res: Object)"},ready_check:{"!type":"fn()"},send_offline_queue:{"!type":"fn()"},connection_gone:{"!type":"fn(why: String)"},on_data:{"!type":"fn(data: Object)"},return_error:{"!type":"fn(err: Error)"},return_reply:{"!type":"fn(reply: Object)"},send_command:{"!type":"fn(command: String, args: Object, callback: fn()) -> Object"},
pub_sub_command:{"!type":"fn(command_obj: Object)"},end:{"!type":"fn()"},select:{"!type":"fn(db: Object, callback: fn())"},auth:{"!type":"fn()"},hmget:{"!type":"fn(arg1: Object, arg2: Object, arg3: Object)"},hmset:{"!type":"fn(args: Object, callback: fn())"},multi:{"!type":"fn(args: Object) -> +redis.Multi"},MULTI:{"!type":"fn(args: Object) -> +redis.Multi"},EVAL:{"!type":"fn()"},SELECT:{"!type":"fn()"},AUTH:{"!type":"fn()"},HMGET:{"!type":"fn(arg1: Object, arg2: Object, arg3: Object)"},HMSET:{"!type":"fn(args: Object, callback: fn())"},
eval:{"!type":"fn()"}}},Multi:{"!proto":"Object","!type":"fn(client: RedisClient, args: Object)",prototype:{hmset:{"!type":"fn() -> +redis.Multi"},exec:{"!type":"fn(callback: fn()) -> Boolean"},HMSET:{"!type":"fn()"},EXEC:{"!type":"fn()"}},queue:"[[MULTI]]"}},Commands:{"!proto":"Object",append:"String",auth:"String",bgrewriteaof:"String",bgsave:"String",bitcount:"String",bitop:"String",blpop:"String",brpop:"String",brpoplpush:"String","client kill":"String","client list":"String","client getname":"String",
"client setname":"String","config get":"String","config rewrite":"String","config set":"String","config resetstat":"String",dbsize:"String","debug object":"String","debug segfault":"String",decr:"String",decrby:"String",del:"String",discard:"String",dump:"String",echo:"String",eval:"String",evalsha:"String",exec:"String",exists:"String",expire:"String",expireat:"String",flushall:"String",flushdb:"String",get:"String",getbit:"String",getrange:"String",getset:"String",hdel:"String",hexists:"String",
hget:"String",hgetall:"String",hincrby:"String",hincrbyfloat:"String",hkeys:"String",hlen:"String",hmget:"String",hmset:"String",hset:"String",hsetnx:"String",hvals:"String",incr:"String",incrby:"String",incrbyfloat:"String",info:"String",keys:"String",lastsave:"String",lindex:"String",linsert:"String",llen:"String",lpop:"String",lpush:"String",lpushx:"String",lrange:"String",lrem:"String",lset:"String",ltrim:"String",mget:"String",migrate:"String",monitor:"String",move:"String",mset:"String",msetnx:"String",
multi:"String",object:"String",persist:"String",pexpire:"String",pexpireat:"String",ping:"String",psetex:"String",psubscribe:"String",pubsub:"String",pttl:"String",publish:"String",punsubscribe:"String",quit:"String",randomkey:"String",rename:"String",renamenx:"String",restore:"String",rpop:"String",rpoplpush:"String",rpush:"String",rpushx:"String",sadd:"String",save:"String",scard:"String","script exists":"String","script flush":"String","script kill":"String","script load":"String",sdiff:"String",
sdiffstore:"String",select:"String",set:"String",setbit:"String",setex:"String",setnx:"String",setrange:"String",shutdown:"String",sinter:"String",sinterstore:"String",sismember:"String",slaveof:"String",slowlog:"String",smembers:"String",smove:"String",sort:"String",spop:"String",srandmember:"String",srem:"String",strlen:"String",subscribe:"String",sunion:"String",sunionstore:"String",sync:"String",time:"String",ttl:"String",type:"String",unsubscribe:"String",unwatch:"String",watch:"String",zadd:"String",
zcard:"String",zcount:"String",zincrby:"String",zinterstore:"String",zrange:"String",zrangebyscore:"String",zrank:"String",zrem:"String",zremrangebyrank:"String",zremrangebyscore:"String",zrevrange:"String",zrevrangebyscore:"String",zrevrank:"String",zscore:"String",zunionstore:"String",scan:"String",sscan:"String",hscan:"String",zscan:"String"}}}});
define("javascript/contentAssist/indexFiles/expressIndex",[],function(){return{"!name":"express","!define":{express:{createServer:{"!type":"fn() -> application"},application:"application",request:"request",response:"response",Route:"Route",Router:"Router","!proto":"Object","!type":"fn() -> application"},Route:{prototype:{match:{"!type":"fn(path: String) -> Boolean"}},"!proto":"Object","!type":"fn(method: String, path: String, callbacks: [fn()], options: Object)"},Router:{prototype:{param:{"!type":"fn(name: String, fn: fn()) -> Object"},
matchRequest:{"!type":"fn(req: IncomingMessage, i: Number, head: String) -> Route"},match:{"!type":"fn(method: String, url: String, i: Number, head: String) -> Route"},route:{"!type":"fn(method: String, path: String, callbacks: fn()) -> Router"},all:{"!type":"fn(path: String) -> Router"}},"!proto":"Object","!type":"fn(options: Object)"},application:{"!proto":"Object",init:{"!type":"fn()"},defaultConfiguration:{"!type":"fn()"},use:{"!type":"fn(route: String, fn: fn()) -> Object"},engine:{"!type":"fn(ext: String, fn: fn()) -> Object"},
param:{"!type":"fn(name: String, fn: fn()) -> Object"},set:{"!type":"fn(setting: String, val: String) -> Object"},path:{"!type":"fn() -> String"},enabled:{"!type":"fn(setting: String) -> Boolean"},disabled:{"!type":"fn(setting: String) -> Boolean"},enable:{"!type":"fn(setting: String) -> Object"},disable:{"!type":"fn(setting: String) -> Object"},configure:{"!type":"fn(env: String, fn: fn()) -> Object"},all:{"!type":"fn(path: String) -> Object"},render:{"!type":"fn(name: String, options: Object, fn: fn())"},
listen:{"!type":"fn()"}},request:{"!proto":"Object",header:{"!type":"fn(name: String) -> Object"},accepts:{"!type":"fn(type: Object)"},acceptsEncoding:{"!type":"fn(encoding: String) -> Boolean"},acceptsCharset:{"!type":"fn(charset: String) -> Boolean"},acceptsLanguage:{"!type":"fn(lang: String) -> Boolean"},range:{"!type":"fn(size: Number)"},param:{"!type":"fn(name: String, defaultValue: Object) -> String"},is:{"!type":"fn(type: String) -> Boolean"},get:{"!type":"fn(name: String) -> Object"}},response:{"!proto":"Object",
status:{"!type":"fn(code: Number) -> response"},links:{"!type":"fn(links: Object) -> response"},send:{"!type":"fn(body: String) -> response"},json:{"!type":"fn(obj: Object) -> response"},jsonp:{"!type":"fn(obj: Object) -> response"},sendfile:{"!type":"fn(path: String, options: Object, fn: fn())"},download:{"!type":"fn(path: String, filename: String, fn: fn())"},type:{"!type":"fn(type: String)"},format:{"!type":"fn(obj: Object) -> response"},attachment:{"!type":"fn(filename: String) -> response"},
header:{"!type":"fn(field: Object, val: String) -> response"},get:{"!type":"fn(field: String) -> String"},clearCookie:{"!type":"fn(name: String, options: Object) -> response"},cookie:{"!type":"fn(name: String, val: Object, options: Object) -> response"},location:{"!type":"fn(url: String) -> response"},redirect:{"!type":"fn(url: String)"},vary:{"!type":"fn(field: Object) -> response"},render:{"!type":"fn(view: String, options: Object, fn: fn())"},contentType:{"!type":"fn(type: String)"},set:{"!type":"fn(field: Object, val: String) -> response"}},
middleware:{"!proto":"Object",init:{"!type":"fn(app: fn())"}}}}});
define("javascript/contentAssist/indexFiles/amqpIndex",[],function(){return{"!name":"amqp","this":"<top>",global:"<top>","!define":{amqp:{"!proto":"Object",Connection:"fn(connectionArgs: Object, options: Object, readyCallback: fn())",createConnection:"fn(options: Object, implOptions: Object, readyCallback: fn()) -> Connection"},Connection:{"!type":"fn(connectionArgs: ?, options: ?, readyCallback: ?)","!proto":"EventEmitter",prototype:{setOptions:"fn(options: Object)",setImplOptions:"fn(options: Object)",
connect:"fn()",reconnect:"fn()",addAllListeners:"fn()",heartbeat:"fn()",exchange:"fn(name: String, options: Object, openCallback: fn()) -> Exchange",exchangeClosed:"fn(name: String)",queue:"fn(name: String) -> Queue",queueClosed:"fn(name: String)",publish:"fn(routingKey: Object, body: Object, options: Object, callback: fn())",generateChannelId:"fn() -> String"}},Exchange:{"!type":"fn(connection: Connection, channel: Channel, name: String, options: Object, openCallback: fn())","!proto":"Channel",prototype:{publish:"fn(routingKey: Object, data: Object, options: Object, callback: fn())",
cleanup:"fn()",destroy:"fn(ifUnused: Boolean)",unbind:"fn()",bind:"fn()",bind_headers:"fn()"}},Queue:{"!type":"fn(connection: Connection, channel: Channel, name: String, options: Object, callback: fn())","!proto":"Channel",prototype:{subscribeRaw:"fn(options: Object, messageListener: fn())",unsubscribe:"fn(consumerTag: String)",subscribe:"fn(options: Object, messageListener: fn())",shift:"fn(reject: Object, requeue: Object)",bind:"fn(exchange: Exchange, routingKey: String, callback: fn())",unbind:"fn(exchange: Exchange, routingKey: String)",
bind_headers:"fn()",destroy:"fn(options: Object)",purge:"fn()",flow:"fn(active: Object)",subscribeJSON:"fn(options: Object, messageListener: fn())"}},Channel:{"!type":"fn(connection: Connection, channel: Channel)","!proto":"EventEmitter",prototype:{closeOK:"fn()",reconnect:"fn()",close:"fn()"}}}}});
define("javascript/contentAssist/proposalUtils",[],function(){return{looselyMatches:function(a,d){if(d===null||a===null)return!1;if(a.length===0)return!0;if(a.charAt(0).toLowerCase()!==d.charAt(0).toLowerCase())return!1;if(this.startsWith(d,a))return!0;if(this.startsWith(d.toLowerCase(),a))return!0;if(a===a.toLowerCase())return!1;var e=this.toCamelCaseParts(a),k=this.toCamelCaseParts(d);if(e.length>k.length)return!1;for(var h=0;h<e.length;++h)if(!this.startsWith(k[h],e[h]))return!1;return!0},toCamelCaseParts:function(a){for(var d=
[],e=a.length-1;e>=0;--e)this.isUpperCase(a.charAt(e))&&(d.push(a.substring(e)),a=a.substring(0,e));a.length!==0&&d.push(a);return d.reverse()},startsWith:function(a,d){return a.substr(0,d.length)===d},isUpperCase:function(a){return a>="A"&&a<="Z"},repeatChar:function(a,d){for(var e="",k=0;k<d;k++)e+=a;return e},inRange:function(a,d,e){return d[0]<=a&&(e?d[1]>=a:d[1]>a)},isBefore:function(a,d){return!d?!0:a<d[0]},afterDot:function(a,d,e){var k;k=d.property?d.property.range[0]:d.range[1]+2;if(!this.inRange(a-
1,d.range)||this.inRange(a-1,d.object.range)||a>k)return!1;for(d=d.object.range[1];e.charAt(d)!=="."&&d<k;)d++;return e.charAt(d)!=="."?!1:d<a}}});
(function(a){var d,e;function k(b,a,c){return b.slice(a,c)}function h(b){return b==="\n"||b==="\r"||b==="\u2028"||b==="\u2029"}function c(b){return b===" "||b==="\t"||b==="\u000b"||b==="\u000c"||b==="\u00a0"||b.charCodeAt(0)>=5760&&"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(b)>=0}function l(b){return"0123456789".indexOf(b)>=0}function g(b){return"01234567".indexOf(b)>=0}function q(b){return b==="$"||b==="_"||b==="\\"||b>="a"&&b<=
"z"||b>="A"&&b<="Z"||b.charCodeAt(0)>=128&&d.test(b)}function j(b){return"><(){}[],:*|?!=".indexOf(b)===-1&&!c(b)&&!h(b)}function b(){}function s(b){return b.replace(/^\s+/,"").replace(/\s+$/,"")}function f(b){var a,d,j,f,s,b=b.replace(/^\/\*\*/,"").replace(/\*\/$/,"");a=0;d=b.length;j=0;for(f="";a<d;){s=b[a];switch(j){case 0:h(s)?f+=s:s==="*"?j=1:c(s)||(f+=s,j=2);break;case 1:c(s)||(f+=s);j=2;break;case 2:f+=s,h(s)&&(j=0)}a+=1}return f}var v,o,r,w;d=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
e=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
v=typeof"doctrine"[0]!==void 0;(w=Array.isArray)||(w=function(b){return Object.prototype.toString.call(b)==="[object Array]"});v||(k=function(b,a,c){return b.slice(a,c).join("")});"0.0.4".slice(-3)==="dev"&&(b=function(b,a){if(!b)throw Error(a);});(function(a){var d,i,f,s,K,e,w,o,k,r,qa,sa,za,ea,Fa,La,Ma,Ga,oa,ta,ua,ma,Aa;function H(){var b=J[E];E+=1;return b}function Sa(){var b,a;b="";if(a!=="."){b=H();a=J[E];if(b==="0"){if(a==="x"||a==="X"){for(b+=H();E<V;){a=J[E];if(!("0123456789abcdefABCDEF".indexOf(a)>=
0))break;b+=H()}if(b.length<=2)throw"unexpected token";if(E<V&&(a=J[E],q(a)))throw"unexpected token";ba=parseInt(b,16);return i}if(g(a)){for(b+=H();E<V;){a=J[E];if(!g(a))break;b+=H()}if(E<V&&(a=J[E],q(a)||l(a)))throw"unexpected token";ba=parseInt(b,8);return i}if(l(a))throw"unexpected token";}for(;E<V;){a=J[E];if(!l(a))break;b+=H()}}if(a===".")for(b+=H();E<V;){a=J[E];if(!l(a))break;b+=H()}if(a==="e"||a==="E"){b+=H();a=J[E];if(a==="+"||a==="-")b+=H();a=J[E];if(l(a))for(b+=H();E<V;){a=J[E];if(!l(a))break;
b+=H()}else throw"unexpected token";}if(E<V&&(a=J[E],q(a)))throw"unexpected token";ba=parseFloat(b);return i}function va(){var b;for(wa=E;E<V&&c(J[E]);)H();if(E>=V)return y=s;b=J[E];switch(b){case '"':b="";var a,i,z,v;a=J[E];for(++E;E<V;)if(i=H(),i===a){a="";break}else if(i==="\\")if(i=H(),h(i))i==="\r"&&J[E]==="\n"&&++E;else switch(i){case "n":b+="\n";break;case "r":b+="\r";break;case "t":b+="\t";break;case "u":case "x":z=E;a:{var q=v=void 0,D=void 0,I=0,q=i==="u"?4:2;for(v=0;v<q;++v)if(E<V&&"0123456789abcdefABCDEF".indexOf(J[E])>=
0)D=H(),I=I*16+"0123456789abcdef".indexOf(D.toLowerCase());else{v="";break a}v=String.fromCharCode(I)}v?b+=v:(E=z,b+=i);break;case "b":b+="\u0008";break;case "f":b+="\u000c";break;case "v":b+="\u000b";break;default:g(i)?(z="01234567".indexOf(i),E<V&&g(J[E])&&(z=z*8+"01234567".indexOf(H()),"0123".indexOf(i)>=0&&E<V&&g(J[E])&&(z=z*8+"01234567".indexOf(H()))),b+=String.fromCharCode(z)):b+=i}else if(h(i))break;else b+=i;if(a!=="")throw"unexpected quote";ba=b;return y=d;case ":":return H(),y=K;case ",":return H(),
y=e;case "(":return H(),y=w;case ")":return H(),y=o;case "[":return H(),y=k;case "]":return H(),y=r;case "{":return H(),y=qa;case "}":return H(),y=sa;case ".":H();if(E<V){b=J[E];if(b==="<")return H(),y=za;if(b==="."&&E+1<V&&J[E+1]===".")return H(),H(),y=ea;if(l(b))return y=Sa()}return y=Fa;case "<":return H(),y=La;case ">":return H(),y=Ma;case "*":return H(),y=Ga;case "|":return H(),y=oa;case "?":return H(),y=ta;case "!":return H(),y=ua;case "=":return H(),y=ma;default:if(l(b))return y=Sa();if(j(b)){for(ba=
H();E<V&&j(J[E]);){b=J[E];if(b==="."&&E+1<V&&(b=J[E+1],b==="<"))break;ba+=H()}return y=f}return y=Aa}}function I(a,c){b(y===a,c||"consumed token not matched");va()}function Z(b){if(y!==b)throw"unexpected token";va()}function Ha(){var b;b=ba;if(y===f||y===d)va();else if(y===i)I(i),b=String(b);else throw"unexpected token";return y===K?(I(K),{type:D.FieldType,key:b,value:ca()}):{type:D.FieldType,key:b,value:null}}function Ba(){var b;b=ba;Z(f);b={type:D.NameExpression,name:b};if(y===za||y===La){va();
var a=[];for(a.push(fa());y===e;)I(e),a.push(fa());Z(Ma);return{type:D.TypeApplication,expression:b,applications:a}}return b}function X(){for(var b=[],a=!0,c,d=!1;y!==o;){y===ea&&(I(ea),d=!0);c=ca();c.type===D.NameExpression&&y===K&&(I(K),c={type:D.ParameterType,name:c.name,expression:ca()});if(y===ma)I(ma),c={type:D.OptionalType,expression:c},a=!1;else if(!a)throw"unexpected token";d&&(c={type:D.RestType,expression:c});b.push(c);y!==o&&Z(e)}return b}function na(){switch(y){case Ga:return I(Ga),{type:D.AllLiteral};
case w:var a;I(w,"UnionType should start with (");a=[];if(y!==o)for(;;){a.push(ca());if(y===o)break;Z(oa)}I(o,"UnionType should end with )");return{type:D.UnionType,elements:a};case k:I(k,"ArrayType should start with [");for(a=[];y!==r;){if(y===ea){I(ea);a.push({type:D.RestType,expression:ca()});break}else a.push(ca());y!==r&&Z(e)}Z(r);return{type:D.ArrayType,elements:a};case qa:I(qa,"RecordType should start with {");a=[];if(y===e)I(e);else for(;y!==sa;)a.push(Ha()),y!==sa&&Z(e);Z(sa);return{type:D.RecordType,
fields:a};case f:if(ba==="null")return I(f),{type:D.NullLiteral};if(ba==="undefined")return I(f),{type:D.UndefinedLiteral};if(ba==="function"){var c,d,i;b(y===f&&ba==="function","FunctionType should start with 'function'");I(f);Z(w);a=!1;d=[];c=null;y!==o&&(y===f&&(ba==="this"||ba==="new")?(a=ba==="new",I(f),Z(K),c=Ba(),y===e&&(I(e),d=X())):d=X());Z(o);i=null;y===K&&(I(K,"ResultType should start with :"),y===f&&ba==="void"?(I(f),i={type:D.VoidLiteral}):i=ca());d={type:D.FunctionType,params:d,result:i};
c&&(d["this"]=c,a&&(d["new"]=!0));a=d}else a=Ba();return a;default:throw"unexpected token";}}function ca(){var b;if(y===ta)return I(ta),y===e||y===ma||y===sa||y===o||y===oa||y===s?{type:D.NullableLiteral}:{type:D.NullableType,expression:na(),prefix:!0};if(y===ua)return I(ua),{type:D.NonNullableType,expression:na(),prefix:!0};b=na();if(y===ua)return I(ua),{type:D.NonNullableType,expression:b,prefix:!1};return y===ta?(I(ta),{type:D.NullableType,expression:b,prefix:!1}):b}function fa(){var b;b=ca();
if(y!==oa)return b;b=[b];for(I(oa);;){b.push(ca());if(y!==oa)break;I(oa)}return{type:D.UnionType,elements:b}}function Na(){var b;if(y===ea)return I(ea),{type:D.RestType,expression:fa()};b=fa();return y===ma?(I(ma),{type:D.OptionalType,expression:b}):b}function Y(b,a,c){var d,i,j;switch(b.type){case D.NullableLiteral:d="?";break;case D.AllLiteral:d="*";break;case D.NullLiteral:d="null";break;case D.UndefinedLiteral:d="undefined";break;case D.VoidLiteral:d="void";break;case D.UnionType:d=c?"":"(";for(i=
0,j=b.elements.length;i<j;++i)d+=Y(b.elements[i],a),i+1!==j&&(d+="|");c||(d+=")");break;case D.ArrayType:d="[";for(i=0,j=b.elements.length;i<j;++i)d+=Y(b.elements[i],a),i+1!==j&&(d+=a?",":", ");d+="]";break;case D.RecordType:d="{";for(i=0,j=b.fields.length;i<j;++i)d+=Y(b.fields[i],a),i+1!==j&&(d+=a?",":", ");d+="}";break;case D.FieldType:d=b.value?b.key+(a?":":": ")+Y(b.value,a):b.key;break;case D.FunctionType:d=a?"function(":"function (";b["this"]&&(d+=b["new"]?a?"new:":"new: ":a?"this:":"this: ",
d+=Y(b["this"],a),b.params.length!==0&&(d+=a?",":", "));for(i=0,j=b.params.length;i<j;++i)d+=Y(b.params[i],a),i+1!==j&&(d+=a?",":", ");d+=")";b.result&&(d+=(a?":":": ")+Y(b.result,a));break;case D.ParameterType:d=b.name+(a?":":": ")+Y(b.expression,a);break;case D.RestType:d="...";b.expression&&(d+=Y(b.expression,a));break;case D.NonNullableType:d=b.prefix?"!"+Y(b.expression,a):Y(b.expression,a)+"!";break;case D.OptionalType:d=Y(b.expression,a)+"=";break;case D.NullableType:d=b.prefix?"?"+Y(b.expression,
a):Y(b.expression,a)+"?";break;case D.NameExpression:d=b.name;break;case D.TypeApplication:d=Y(b.expression,a)+".<";for(i=0,j=b.applications.length;i<j;++i)d+=Y(b.applications[i],a),i+1!==j&&(d+=a?",":", ");d+=">";break;default:throw Error("Unknown type "+b.type);}return d}var D,E,wa,J,V,y,ba;D={NullableLiteral:"NullableLiteral",AllLiteral:"AllLiteral",NullLiteral:"NullLiteral",UndefinedLiteral:"UndefinedLiteral",VoidLiteral:"VoidLiteral",UnionType:"UnionType",ArrayType:"ArrayType",RecordType:"RecordType",
FieldType:"FieldType",FunctionType:"FunctionType",ParameterType:"ParameterType",RestType:"RestType",NonNullableType:"NonNullableType",OptionalType:"OptionalType",NullableType:"NullableType",NameExpression:"NameExpression",TypeApplication:"TypeApplication"};Aa=0;Fa=1;za=2;ea=3;La=4;Ma=5;w=6;o=7;qa=8;sa=9;k=10;r=11;e=12;K=13;Ga=14;oa=15;ta=16;ua=17;ma=18;f=19;d=20;i=21;s=22;a.parseType=function(b,a){var c;J=b;V=J.length;wa=E=0;v||(J=J.split(""));va();c=fa();if(a&&a.midstream)return{expression:c,index:wa};
if(y!==s)throw"not reach to EOF";return c};a.parseParamType=function(b,a){var c;J=b;V=J.length;wa=E=0;v||(J=J.split(""));va();c=Na();if(a&&a.midstream)return{expression:c,index:wa};if(y!==s)throw"not reach to EOF";return c};a.stringify=function(b,a){a==null&&(a={});return Y(b,a.compact,a.topLevel)};a.Syntax=D})(o={});(function(a){function d(){var b=O[g];g+=1;return b}function i(){var b="";for(d();g<R&&(O[g]>="a"&&O[g]<="z"||O[g]>="A"&&O[g]<="Z"||O[g]>="0"&&O[g]<="9");)b+=d();return b}function j(){var b,
a,d=g;for(a=!1;d<R;){b=O[d];if(h(b))a=!0;else if(a){if(b==="@")break;c(b)||(a=!1)}d+=1}return d}function Q(b,a){var i,j,f;for(f=!1;g<a;)if(i=O[g],c(i))d();else{i==="{"?d():f=!0;break}if(f){f=k(O,g,a);try{return j=b==="param"?o.parseParamType(f,{midstream:!0}):o.parseType(f,{midstream:!0}),g+=j.index,j.expression}catch(s){}}else{j=0;for(f="";g<a;){i=O[g];if(h(i))return;if(i==="}")if(j===0){d();break}else j-=1;else i==="{"&&(j+=1);f+=d()}try{return b==="param"?o.parseParamType(f):o.parseType(f)}catch(B){}}}
function K(b,a){for(var i,j,f;g<b&&(c(O[g])||h(O[g]));)d();if(!(g>=b)){if(!q(O[g]))if(a&&O[g]==="[")f=!0;else return;for(j=d();g<b;){i=O[g];if(c(i)||h(i)){d();break}if(f&&O[g]==="]"){j+=d();break}if(!(i==="$"||i==="_"||i==="\\"||i>="a"&&i<="z"||i>="A"&&i<="Z"||i>="0"&&i<="9"||i.charCodeAt(0)>=128&&e.test(i)))return;j+=d()}f&&O[g]==="]"&&(j+=d());return j}}function l(){function a(b){if(!c.errors)c.errors=[];c.errors.push(b)}for(var c,f,e;g<R&&O[g]!=="@";)d();if(!(g>=R)){b(O[g]==="@");f=i();c={title:f,
description:null};if(!f&&(a("Missing or invalid title"),!r))return;e=j(f);if(f==="define"||f==="enum"||f==="extends"||f==="implements"||f==="param"||f==="return"||f==="this"||f==="type"||f==="typedef"||f==="throws"||f==="returns"||f==="property"||f==="augments")if(c.type=Q(f,e),!c.type&&(a("Missing or invalid tag type"),!r))return;if(f==="param"||f==="property")if(c.name=K(e,qa&&f==="param"),c.name){if(c.name.charAt(0)==="["&&c.name.charAt(c.name.length-1)==="]")c.name=c.name.substring(1,c.name.length-
1),f={type:"OptionalType",expression:c.type},c.type=f}else if(a("Missing or invalid tag name"),!r)return;if(f=s(k(O,g,e)))c.description=f;g=e;return c}}var g,R,O,r,qa;a.parse=function(b,a){var c=[],i,j,B;a===void 0&&(a={});O=typeof a.unwrap==="boolean"&&a.unwrap?f(b):b;if(a.tags)if(w(a.tags)){B={};for(i=0,j=a.tags.length;i<j;i++)if(typeof a.tags[i]==="string")B[a.tags[i]]=!0;else throw Error('Invalid "tags" parameter: '+a.tags);}else throw Error('Invalid "tags" parameter: '+a.tags);v||(O=O.split(""));
R=O.length;g=0;r=a.recoverable;qa=a.sloppy;for(i="";g<R&&O[g]!=="@";)i+=d();for(j=s(i);;){i=l();if(!i)break;(!B||B.hasOwnProperty(i.title))&&c.push(i)}return{description:j,tags:c}}})(r={});a.version="0.0.4";a.parse=r.parse;a.parseType=o.parseType;a.parseParamType=o.parseParamType;a.unwrapComment=f;a.Syntax=function(b){var a={},c;for(c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}(o.Syntax);a.type={Syntax:a.Syntax,parseType:o.parseType,parseParamType:o.parseParamType,stringify:o.stringify}})(typeof exports===
"undefined"?doctrine={}:exports);define("doctrine/doctrine",function(){});
define("javascript/contentAssist/typeUtils",["javascript/contentAssist/proposalUtils","doctrine/doctrine"],function(a){function d(a){if(!a)return a;if(a.type)return a;try{return doctrine.parseParamType(a)}catch(b){return console.error("doctrine failure to parse: "+a),{}}}function e(a){if(typeof a!=="string")throw Error("Expected string, but found: "+JSON.parse(a));return{type:"NameExpression",name:a}}function k(a,b,c){if(typeof a!=="string")return!1;else if(a==="Object"||a==="undefined")return!0;
else if(a.substring(0,q.length)!==q)return!1;if(c){if(c[a])return!0}else c={};c[a]=!0;var a=b[a],d=0,e;for(e in a)if(a.hasOwnProperty(e)&&(d++,d>1))break;return d===1?k(a.$$proto.typeObj.name,b,c):!1}var h=e("Object"),c=/\$\$__JUST_DOTS__\$\$/g,l=/:undefined|:\{\}/g,g=function(a,b,c){this._typeObj=d(a);this.range=b;this.path=c};g.prototype={set typeObj(a){typeof a==="string"&&(a=d(a));this._typeObj=a},get typeObj(){return this._typeObj}};g.revive=function(a){var b=new g,c;for(c in a)if(a.hasOwnProperty(c))c===
"typeSig"?b.typeObj=a[c]:b[c]=a[c];return b};var q="gen~";return{Definition:g,GEN_NAME:q,isArrayType:function(a){return a.type==="ArrayType"||a.type==="TypeApplication"},isFunctionOrConstructor:function(a){return a.type==="FunctionType"},isPrototypeName:function(a){return a.substr(-6,6)==="~proto"},parameterizeArray:function(a){return{type:"ArrayType",elements:[a]}},createAppliedArray:function(a){return{type:"TypeApplication",applications:[a],expression:{name:"Array",type:"NameExpression"}}},createFunctionType:function(a,
b,c){a={type:"FunctionType",params:a,result:b};if(c)a.params=a.params||[],a.params.push({type:"ParameterType",name:"new",expression:b});return a},extractArrayParameterType:function(a){if(a.type==="TypeApplication")if(a.expression.name==="Array")a=a.applications;else return a.expression;else if(a.type==="ArrayType")a=a.elements;else return a;return a.length>0?a[0]:h},extractReturnType:function(a){return a.result||(a.type==="FunctionType"?this.UNDEFINED_TYPE:a)},parseJSDocComment:function(a){var b=
{params:{}};if(a){a=a.value;if(!a)return b;try{var c=doctrine.parse("/*"+a+"*/",{unwrap:!0,tags:["param","type","return"]}).tags;if(c)for(a=0;a<c.length;a++)switch(c[a].title){case "typedef":case "define":case "type":b.type=c[a].type;break;case "return":b.rturn=c[a].type;break;case "param":var d=c[a].name;d.charAt(0)==="["&&d.charAt(d.length-1)==="]"&&(d=d.substring(1,d.length-1));b.params[d]=c[a].type}}catch(e){}}return b},convertJsDocType:function(a,b,c,d){typeof d!=="number"&&(d=0);if(!a)return h;
var e=this,g=a.name,l=b.getAllTypes();switch(a.type){case "NullableLiteral":case "AllLiteral":case "NullLiteral":case "UndefinedLiteral":case "VoidLiteral":return{type:a.type};case "UnionType":return{type:a.type,elements:a.elements.map(function(a){return e.convertJsDocType(a,b,c,d)})};case "RestType":return{type:a.type,expression:e.convertJsDocType(a.expression,b,c,d)};case "ArrayType":return{type:a.type,elements:a.elements.map(function(a){return e.convertJsDocType(a,b,c,d)})};case "FunctionType":var w=
{type:a.type,params:a.params.map(function(a){return e.convertJsDocType(a,b,c,d)})};if(a.result)w.result=d>2?{type:"NameExpression",name:"$$__JUST_DOTS__$$"}:e.convertJsDocType(a.result,b,c,d);return w;case "TypeApplication":w={type:a.type,expression:e.convertJsDocType(a.expression,b,c,d)};if(a.applications)w.applications=a.applications.map(function(a){return e.convertJsDocType(a,b,c,d)});return w;case "ParameterType":return{type:a.type,name:g,expression:a.expression?e.convertJsDocType(a.expression,
b,c,d):null};case "NonNullableType":case "OptionalType":case "NullableType":return{prefix:!0,type:a.type,expression:e.convertJsDocType(a.expression,b,c,d)};case "NameExpression":if(c&&b.isSyntheticName(g)){var k=l[g];if(k.$$fntype)return e.convertJsDocType(k.$$fntype,b,c,d);var p=[];Object.keys(k).forEach(function(a){if(a!=="$$proto"&&a!=="$$isBuiltin"){var i=k[a],i=d>0&&i.typeObj.type==="NameExpression"&&b.isSyntheticName(i.typeObj.name)&&!l[i.typeObj.name].$$fntype?{type:"NameExpression",name:"$$__JUST_DOTS__$$"}:
e.convertJsDocType(i.typeObj,b,c,d+1);p.push({type:"FieldType",key:a,value:i})}});return{type:"RecordType",fields:p}}else if(l[g])return{type:"NameExpression",name:g};else if(a=g[0].toUpperCase()+g.substring(1),l[a])return{type:"NameExpression",name:a};break;case "FieldType":return{type:a.type,key:a.key,value:e.convertJsDocType(a.value,b,c,d)};case "RecordType":if(c)return{type:a.type,params:a.fields.map(function(a){return e.convertJsDocType(a,b,c,d+1)})};else{for(var g={},i=0;i<a.fields.length;i++){var B=
e.convertJsDocType(a.fields[i],b,c,d+1);g[B.key]=B.value}a=b.newFleetingObject();for(w in g)g.hasOwnProperty(w)&&b.addVariable(w,a.name,g[w]);return a}}return h},createNameType:e,createParamType:function(a,b){return{type:"ParameterType",name:a,expression:b}},convertToSimpleTypeName:function(a){switch(a.type){case "NullableLiteral":case "AllLiteral":case "NullLiteral":return"Object";case "UndefinedLiteral":case "VoidLiteral":return"undefined";case "NameExpression":return a.name;case "TypeApplication":case "ArrayType":return"Array";
case "FunctionType":return"Function";case "UnionType":return a.expressions&&a.expressions.length>0?this.convertToSimpleTypeName(a.expressions[0]):"Object";case "RecordType":return"Object";case "FieldType":return this.convertToSimpleTypeName(a.value);case "NonNullableType":case "OptionalType":case "NullableType":case "ParameterType":return this.convertToSimpleTypeName(a.expression)}},styleAsProperty:function(a,b){return b?'<span style="color: blue;font-weight:bold;">'+a+"</span>":a},styleAsType:function(a,
b){return b?'<span style="color: black;">'+a+"</span>":a},styleAsOther:function(a,b){return b?'<span style="font-weight:bold; color:purple;">'+a+"</span>":a},createReadableType:function(a,b,d,f,e){if(d){a=this.convertJsDocType(a,b,!0);if(e)return this.convertToHtml(a,0);a=doctrine.type.stringify(a,{compact:!0});a=a.replace(c,"{...}");return a=a.replace(l,"")}else return a=this.extractReturnType(a),this.createReadableType(a,b,!0,f,e)},convertToHtml:function(c,b){var d=this,f,e=[],b=b||0;switch(c.type){case "NullableLiteral":return this.styleAsType("?",
!0);case "AllLiteral":return this.styleAsType("*",!0);case "NullLiteral":return this.styleAsType("null",!0);case "UndefinedLiteral":return this.styleAsType("undefined",!0);case "VoidLiteral":return this.styleAsType("void",!0);case "NameExpression":return this.styleAsType(c.name==="$$__JUST_DOTS__$$"?"{...}":c.name,!0);case "UnionType":return e=[],c.expressions&&c.expressions.forEach(function(a){e.push(d.convertToHtml(a,b+1))}),"( "+e.join(", ")+" )";case "TypeApplication":c.applications&&c.applications.forEach(function(a){e.push(d.convertToHtml(a,
b))});var g=c.expression.name==="Array";g||(f=this.convertToHtml(c.expression,b)+".<");f+=e.join(",");f+=g?"[]":">";return f;case "ArrayType":return c.elements&&c.elements.forEach(function(a){e.push(d.convertToHtml(a,b+1))}),e.join(", ")+"[]";case "NonNullableType":return"!"+this.convertToHtml(c.expression,b);case "OptionalType":return this.convertToHtml(c.expression,b)+"=";case "NullableType":return"?"+this.convertToHtml(c.expression,b);case "RestType":return"..."+this.convertToHtml(c.expression,
b);case "ParameterType":return this.styleAsProperty(c.name,!0)+(c.expression.name==="$$__JUST_DOTS__$$"?"":":"+this.convertToHtml(c.expression,b));case "FunctionType":var l=!1,h;c.params&&c.params.forEach(function(a){a.name==="this"?(l=!0,h=a.expression):a.name==="new"?(l=!0,h=a.expression):e.push(d.convertToHtml(a,b+1))});if(!h&&c.result)h=c.result;g=h&&h.type!=="UndefinedLiteral"&&h.name!=="undefined"?this.convertToHtml(h,b+1):"";f=this.styleAsOther(l?"new ":"function",!0);l&&(f+=g);f+="("+e.join(",")+
")";!l&&g&&(f+="&rarr;"+g);return f;case "RecordType":return c.fields&&c.fields.length>0?(c.fields.forEach(function(c){e.push(a.repeatChar("&nbsp;&nbsp;",b+1)+d.convertToHtml(c,b+1))}),"{<br/>"+e.join(",<br/>")+"<br/>"+a.repeatChar("&nbsp;&nbsp;",b)+"}"):"{ }";case "FieldType":return this.styleAsProperty(c.key,!0)+":"+this.convertToHtml(c.value,b)}},leftTypeIsMoreGeneral:function(a,b,c){var d=a.name,b=b.name;if(!d&&(a.type==="NullLiteral"||a.type==="UndefinedLiteral"||a.type==="VoidLiteral"))d="undefined";
if(!b)return!1;a=d==="undefined"?0:d==="Object"?1:k(d,c.getAllTypes())?2:3;return a===0?b!=="undefined":a===1?b!=="undefined"&&b!=="Object":a===2?b!=="undefined"&&b!=="Object"&&!k(b,c.getAllTypes()):!1},isEmpty:k,ensureTypeObject:d,isUpperCaseChar:function(a){return a.length<1?!1:isNaN(a.charCodeAt(0))?!1:a.toLocaleUpperCase().charAt(0)===a.charAt(0)},OBJECT_TYPE:h,UNDEFINED_TYPE:e("undefined"),NUMBER_TYPE:e("Number"),BOOLEAN_TYPE:e("Boolean"),STRING_TYPE:e("String"),ARRAY_TYPE:e("Array"),FUNCTION_TYPE:e("Function")}});
define("javascript/contentAssist/indexFiles/browserIndex",[],function(){return{"!name":"browser","!define":{WebSocket:{"!proto":"Object",onreadystatechange:"EventHandler",onopen:"EventHandler",onerror:"EventHandler",onclose:"EventHandler",readyState:"Number",extensions:"String",protocol:"String",close:{"!type":"fn(reason?: Object)"},send:{"!type":"fn(data: String)"}},WebSocket_obj:{"!type":"fn(url: String, protocols: String)",prototype:"WebSocket"},EventHandler:{"!proto":"Object"},XMLHttpRequest:{"!proto":"Object",
onreadystatechange:"EventHandler",open:{"!type":"fn(method: String, url: String, async?: Boolean, user?: String, password?: String)"},setRequestHeader:{"!type":"fn(header: String, value: String)"},timeout:"Number",withCredentials:"Boolean",upload:"Object",send:{"!type":"fn(data?: String)"},abort:{"!type":"fn()"},getResponseHeader:{"!type":"fn(header: String) -> String"},getAllResponseHeaders:{"!type":"fn() -> String"},overrideMimeType:"Object",responseType:"Object",readyState:"Number",response:"Object",
responseText:"String",responseXML:"Document",status:"Number",statusText:"String"},XHR_obj:{"!type":"fn()",prototype:"XMLHttpRequest"},Worker_proto:{"!proto":"Object",terminate:{"!type":"fn()"},postMessage:{"!type":"fn(message: String, transfer?: Object)"},onmessage:{"!type":"fn()"}},Worker_obj:{"!type":"fn(url: String)",prototype:"Worker_proto"},HTMLOptionElement:{"!proto":"HTMLElement"},HTMLElement:{"!proto":"Element",id:"String",title:"String",lang:"String",dir:"String",className:"String"},HTMLImageElement:{"!proto":"HTMLElement"},
Event:{"!proto":"Object",bubbles:"Boolean",cancelable:"Boolean",currentTarget:"Object",defaultPrevented:"Boolean",eventPhase:"Number",explicitOriginalTarget:"Object",originalTarget:"Object",target:"Object",timeStamp:"Number",isTrusted:"Boolean",initEvent:{"!type":"fn(type: String, bubbles: Boolean, cancelable: Boolean)"},preventDefault:{"!type":"fn()"},stopImmediatePropagation:{"!type":"fn()"},stopPropagation:{"!type":"fn()"}},Event_obj:{"!type":"fn(type: String)",prototype:"Event"},MediaQueryList:{"!proto":"Object"},
Selection:{"!proto":"Object",anchorNode:"Node",anchorOffset:"Number",focusNode:"Node",focusOffset:"Number",rangeCount:"Number",isCollapsed:"Boolean",collapse:{"!type":"fn(node: Node, offset: Number)"},collapseToStart:{"!type":"fn()"},collapseToEnd:{"!type":"fn()"},extend:{"!type":"fn(node: Node, offset: Number)"},selectAllChildren:{"!type":"fn(node: Node)"},deleteFromDocument:{"!type":"fn()"},getRangeAt:{"!type":"fn(index: Number) -> Range"},addRange:{"!type":"fn(range: Range)"},removeRange:{"!type":"fn(range: Range)"},
removeAllRanges:{"!type":"fn()"}},Range:{"!proto":"Object",startContainer:"Node",startOffset:"Number",endContainer:"Node",endOffset:"Number",collapsed:"Boolean",commonAncestorContainer:"Node",setStart:{"!type":"fn(refNode: Node, offset: Number)"},setEnd:{"!type":"fn(refNode: Node, offset: Number)"},setStartBefore:{"!type":"fn(refNode: Node)"},setStartAfter:{"!type":"fn(refNode: Node)"},setEndBefore:{"!type":"fn(refNode: Node)"},setEndAfter:{"!type":"fn(refNode: Node)"},collapse:{"!type":"fn(toStart: Node)"},
selectNode:{"!type":"fn(refNode: Node)"},selectNodeContents:{"!type":"fn(refNode: Node)"},compareBoundaryPoints:{"!type":"fn(how: Object, sourceRange: Object) -> Number"},deleteContents:{"!type":"fn()"},extractContents:{"!type":"fn() -> DocumentFragment"},cloneContents:{"!type":"fn() -> DocumentFragment"},insertNode:{"!type":"fn(node: Node)"},surroundContents:{"!type":"fn(nodeParent: Node)"},cloneRange:{"!type":"fn() -> Range"},detach:{"!type":"fn()"},isPointInRange:{"!type":"fn(node: Node, offset: Number) -> Boolean"},
comparePoint:{"!type":"fn(node: Node, offset: Number) -> Number"},intersectsNode:{"!type":"fn(node: Node) -> Boolean"}},DocumentFragment:{"!proto":"Node",prepend:{"!type":"fn(nodes: Node)"},append:{"!type":"fn(nodes: Node)"}},CSSStyleDeclaration:{"!proto":"Object"},Node:{"!proto":"Object",nodeType:"Number",nodeName:"String",baseURI:"String",ownerDocument:"Document",parentNode:"Node",parentElement:"Element",childNodes:"NodeList",firstChild:"Node",lastChild:"Node",previousSibling:"Node",nextSibling:"Node",
nodeValue:"String",textContent:"String",hasChildNodes:{"!type":"fn() -> Boolean"},compareDocumentPosition:{"!type":"fn(other: Node) -> Number"},contains:{"!type":"fn(other: Node) -> Boolean"},insertBefore:{"!type":"fn(child: Node) -> Node"},appendChild:{"!type":"fn(node: Node) -> Node"},replaceChild:{"!type":"fn(child: Node) -> Node"},removeChild:{"!type":"fn(child: Node) -> Node"},normalize:{"!type":"fn()"},cloneNode:{"!type":"fn(deep?: Boolean) -> Node"},isEqualNode:{"!type":"fn(node: Node) -> Boolean"},
lookupPrefix:{"!type":"fn(namespace: String) -> String"},lookupNamespaceURI:{"!type":"fn(prefix: String) -> String"},isDefaultNamespace:{"!type":"fn(namespace: String) -> Boolean"}},Node_obj:{"!type":"fn()",prototype:"Node"},NodeList:{"!proto":"Object",item:"Node",length:"Number"},Screen:{"!proto":"Object",availTop:"Number",availLeft:"Number",availHeight:"Number",availWidth:"Number",colorDepth:"Number",height:"Number",left:"Number",pixelDepth:"Number",top:"Number",width:"Number"},Performance:{"!proto":"Object"},
Navigator:{"!proto":"Object",appName:"String",appVersion:"String",connection:"Connection",cookieEnabled:"Boolean",language:"String",mimeTypes:"MimeTypeArray",onLine:"Boolean",oscpu:"String",platform:"String",plugins:"String",userAgent:"String",javaEnabled:{"!type":"fn() -> Boolean"},registerContentHandler:{"!type":"fn(mimType: String, url: String, title: String)"},registerProtocolHandler:{"!type":"fn(protocol: String, url: String, title: String)"}},MimeTypeArray:{length:"Number",item:{"!type":"fn(index: Number) -> MimeType"},
namedItem:{"!type":"fn(name: String) -> MimeType"}},MimeType:{description:"String",suffixes:"String",type:"String",enabledPlugin:"Plugin"},Plugin:{description:"String",fileName:"String",length:"Number",name:"String",item:{"!type":"fn(index: Number) -> MimeType"},namedItem:{"!type":"fn(name: String) -> MimeType"}},Connection:{bandwidth:"Number",metered:"Boolean",onchange:"Function"},Storage:{"!proto":"Object",length:"Number",key:{"!type":"fn(idx: Number) -> String"},getItem:{"!type":"fn(key: String) -> String"},
setItem:{"!type":"fn(key: String, value: String)"},removeItem:{"!type":"fn(key: String)"},clear:{"!type":"fn()"}},BarInfo:{"!proto":"Object",visible:"Boolean"},Location:{"!proto":"Object",assign:{"!type":"fn(url: String)"},replace:{"!type":"fn(url: String)"},reload:{"!type":"fn()"},href:"String",protocol:"String",host:"String",hostname:"String",port:"String",pathname:"String",search:"String",hash:"String"},History:{"!proto":"Object",length:"Number",state:"Object",go:{"!type":"fn(delta: Number)"},
back:{"!type":"fn()"},forward:{"!type":"fn()"},pushState:{"!type":"fn(data: Object, title: String, url: String)"},replaceState:{"!type":"fn(data: Object, title: String, url: String)"}},Element:{"!proto":"Node",namespaceURI:"String",prefix:"String",localName:"String",tagName:"String",id:"String",className:"String",classList:"DOMTokenList",attributes:"Array",childElementCount:"Number",children:"HTMLCollection",firstElementChild:"Element",lastElementChild:"Element",previousElementSibling:"Element",nextElementSibling:"Element",
getAttribute:{"!type":"fn(name: String) -> String"},getAttributeNS:{"!type":"fn(namespace: String, localname: String) -> String"},setAttribute:{"!type":"fn(name: String, value: Object)"},setAttributeNS:{"!type":"fn(namespace: String, name: String, value: Object)"},removeAttribute:{"!type":"fn(name: String)"},removeAttributeNS:{"!type":"fn(namespace: String, localname: String)"},hasAttribute:{"!type":"fn(name: String) -> Boolean"},hasAttributeNS:{"!type":"fn(namespace: String, localname: String) -> Boolean"},
getElementsByTagName:{"!type":"fn(localName: String) -> HTMLCollection"},getElementsByTagNameNS:{"!type":"fn(namespace: String, localName: String) -> HTMLCollection"},getElementsByClassName:{"!type":"fn(classname: String) -> HTMLCollection"},prepend:{"!type":"fn(nodes: Node)"},append:{"!type":"fn(nodes: Node)"},before:{"!type":"fn(nodes: Node)"},after:{"!type":"fn(nodes: Node)"},replace:{"!type":"fn(nodes: Node)"},remove:{"!type":"fn()"}},HTMLCollection:{"!proto":"Object",length:"Number",item:{"!type":"fn(index: Number) -> Element"},
namedItem:{"!type":"fn(name: String) -> Element"}},DOMTokenList:{"!proto":"Object",length:"Number",item:{"!type":"fn(index: Number) -> String"},contains:{"!type":"fn(token: String) -> Boolean"},add:{"!type":"fn(token: String)"},remove:{"!type":"fn(token: String)"},toggle:{"!type":"fn(token: String) -> Boolean"}},Document:{"!proto":"Node",implementation:"DOMImplementation",URL:"String",documentURI:"String",compatMode:"String",characterSet:"String",contentType:"String",doctype:"DocumentType",documentElement:"Element",
getElementsByTagName:{"!type":"fn(localName: String) -> HTMLCollection"},getElementsByTagNameNS:{"!type":"fn(namespace: String, localName: String) -> HTMLCollection"},getElementsByClassName:{"!type":"fn(classNames: String) -> HTMLCollection"},getElementById:{"!type":"fn(elementId: String) -> Element"},createElement:{"!type":"fn(elementId: String) -> Element"},createElementNS:{"!type":"fn(namespace: String, qualifiedName: String) -> Element"},createDocumentFragment:{"!type":"fn() -> DocumentFragment"},
createTextNode:{"!type":"fn(data: String) -> Text"},createComment:{"!type":"fn(data: String) -> Comment"},createProcessingInstruction:{"!type":"fn(target: String, data: String) -> ProcessingInstruction"},importNode:{"!type":"fn(node: Node, deep?: Boolean) -> Node"},adoptNode:{"!type":"fn(node: Node) -> Node"},createEvent:{"!type":"fn(eventInterfaceName: String) -> Event"},createRange:{"!type":"fn() -> Range"},createNodeIterator:{"!type":"fn(root: Node, whatToShow?: Object, filter?: Object) -> NodeIterator"},
createTreeWalker:{"!type":"fn(root: Node, whatToShow?: Object, filter?: Object) -> TreeWalker"}},TreeWalker:{"!proto":"Object"},NodeIterator:{"!proto":"Object"},ProcessingInstruction:{"!proto":"Node"},Comment:{"!proto":"Node"},Text:{"!proto":"Node"},DocumentType:{"!proto":"Node",name:"String",publicId:"String",systemId:"String",before:{"!type":"fn(nodeOrString: Node)"},after:{"!type":"fn(nodeOrString: Node)"},replace:{"!type":"fn(nodeOrString: Node)"},remove:{"!type":"fn()"}},DOMImplementation:{"!proto":"Object",
createDocumentType:{"!type":"fn(qualifiedName: String, publicId: String, systemId: String) -> DocumentType"},createDocument:{"!type":"fn(namespace: String, qualifiedName: String, doctype: String) -> Document"},createHTMLDocument:{"!type":"fn(title: String) -> Document"},hasFeature:{"!type":"fn(feature: String) -> Boolean"}},Console:{debug:{"!type":"fn(msg: String)"},dir:{"!type":"fn(obj: Object)"},error:{"!type":"fn(msg: String)"},group:{"!type":"fn()"},groupCollapsed:{"!type":"fn()"},groupEnd:{"!type":"fn()"},
info:{"!type":"fn(msg: String)"},log:{"!type":"fn(msg: String)"},time:{"!type":"fn(timerName: String)"},timeEnd:{"!type":"fn(timerName: String)"},trace:{"!type":"fn()"},warn:{"!type":"fn(msg: String)"}},DOMApplicationCache:{"!proto":"Object"}},"this":"<top>",applicationCache:"DOMApplicationCache",closed:"Boolean",console:"Console",defaultStatus:"String",document:"Document",frameElement:"Element",frames:"Array",history:"History",innerHeight:"Number",innerWidth:"Number",length:"Number",location:"Location",
locationbar:"BarInfo",localStorage:"Storage",menubar:"BarInfo",name:"String",navigator:"Navigator",opener:"<top>",outerHeight:"Number",outerWidth:"Number",pageXOffset:"Number",pageYOffset:"Number",parent:"<top>",performance:"Performance",personalbar:"BarInfo",screen:"Screen",screenX:"Number",screenY:"Number",scrollbars:"BarInfo",scrollMaxX:"Number",scrollMaxY:"Number",scrollX:"Number",scrollY:"Number",self:"<top>",sessionStorage:"Storage",sidebar:"BarInfo",status:"String",statusbar:"BarInfo",toolbar:"BarInfo",
top:"<top>",window:"<top>",addEventListener:{"!type":"fn()"},alert:{"!type":"fn(msg: String)"},atob:{"!type":"fn(val: Object) -> String"},back:{"!type":"fn()"},blur:{"!type":"fn()"},btoa:{"!type":"fn(val: Object) -> String"},clearInterval:{"!type":"fn(t: Number)"},clearTimeout:{"!type":"fn(t: Number)"},close:{"!type":"fn()"},confirm:{"!type":"fn(msg: String) -> Boolean"},dispatchEvent:{"!type":"fn(domnode: Node)"},dump:{"!type":"fn(msg: String)"},escape:{"!type":"fn(str: String) -> String"},find:{"!type":"fn(str: String) -> Boolean"},
focus:{"!type":"fn()"},forward:{"!type":"fn()"},getAttention:{"!type":"fn()"},getComputedStyle:{"!type":"fn(domnode: Node) -> CSSStyleDeclaration"},getSelection:{"!type":"fn() -> Selection"},home:{"!type":"fn()"},matchMedia:{"!type":"fn(query: Object) -> MediaQueryList"},moveBy:{"!type":"fn(deltaX: Number, deltaY: Number)"},moveTo:{"!type":"fn(x: Number, y: Number)"},open:{"!type":"fn(strUrl: String, strWindowName: String, strWindowFeatures?: String) -> <top>"},openDialog:{"!type":"fn(strUrl: String, strWindowName: String, strWindowFeatures: String, args?: String) -> <top>"},
postMessage:{"!type":"fn(message: String, targetOrigin: String)"},print:{"!type":"fn()"},prompt:{"!type":"fn(message: String) -> String"},removeEventListener:{"!type":"fn(type: String, listener: Object, useCapture?: Boolean)"},resizeBy:{"!type":"fn(deltaX: Number, deltaY: Number)"},resizeTo:{"!type":"fn(x: Number, y: Number)"},scroll:{"!type":"fn(x: Number, y: Number)"},scrollBy:{"!type":"fn(deltaX: Number, deltaY: Number)"},scrollByLines:{"!type":"fn(lines: Number)"},scrollByPages:{"!type":"fn(pages: Number)"},
scrollTo:{"!type":"fn(x: Number, y: Number)"},setCursor:{"!type":"fn(cursor: String)"},setInterval:{"!type":"fn(callback: Function, ms: Number) -> Number"},setTimeout:{"!type":"fn(callback: Function, ms: Number) -> Number"},sizeToContent:{"!type":"fn()"},stop:{"!type":"fn()"},unescape:{"!type":"fn(str: String) -> String"},updateCommands:{"!type":"fn(cmdName: String)"},onabort:{"!type":"fn(event: Event)"},onbeforeunload:{"!type":"fn(event: Event)"},onblur:{"!type":"fn(event: Event)"},onchange:{"!type":"fn(event: Event)"},
onclick:{"!type":"fn(event: Event)"},onclose:{"!type":"fn(event: Event)"},oncontextmenu:{"!type":"fn(event: Event)"},ondevicemotion:{"!type":"fn(event: Event)"},ondeviceorientation:{"!type":"fn(event: Event)"},ondragdrop:{"!type":"fn(event: Event)"},onerror:{"!type":"fn(event: Event)"},onfocus:{"!type":"fn(event: Event)"},onhashchange:{"!type":"fn(event: Event)"},onkeydown:{"!type":"fn(event: Event)"},onkeypress:{"!type":"fn(event: Event)"},onkeyup:{"!type":"fn(event: Event)"},onload:{"!type":"fn(event: Event)"},
onmousedown:{"!type":"fn(event: Event)"},onmousemove:{"!type":"fn(event: Event)"},onmouseout:{"!type":"fn(event: Event)"},onmouseover:{"!type":"fn(event: Event)"},onmouseup:{"!type":"fn(event: Event)"},onpaint:{"!type":"fn(event: Event)"},onpopstate:{"!type":"fn(event: Event)"},onreset:{"!type":"fn(event: Event)"},onresize:{"!type":"fn(event: Event)"},onscroll:{"!type":"fn(event: Event)"},onselect:{"!type":"fn(event: Event)"},onsubmit:{"!type":"fn(event: Event)"},onunload:{"!type":"fn(event: Event)"},
onpageshow:{"!type":"fn(event: Event)"},onpagehide:{"!type":"fn(event: Event)"},Image:{"!type":"fn(width?: Number, height?: Number)"},Option:{"!type":"fn(text?: String, value?: Object, defaultSelected?: Boolean, selected?: Boolean)"},Worker:"Worker_obj",XMLHttpRequest:"XHR_obj",WebSocket:"WebSocket_obj",Event:"Event_obj",Node:"Node_obj"}});
define("javascript/contentAssist/indexFiles/ecma5Index",[],function(){return{"!name":"ecma5","!define":{Error:{name:{"!type":"String"},message:{"!type":"String"},stack:{"!type":"String"},"!proto":"Object"},Error_obj:{"!type":"fn(err?: Error)",prototype:"Error"},RegExp:{source:{"!type":"String"},global:{"!type":"Boolean"},ignoreCase:{"!type":"Boolean"},multiline:{"!type":"Boolean"},lastIndex:{"!type":"Boolean"},exec:{"!type":"fn(str: String) -> [String]"},test:{"!type":"fn(str: String) -> Boolean"},
"!proto":"Object"},RegExp_obj:{"!type":"fn(val?: RegExp)",prototype:"RegExp"},Date:{toDateString:{"!type":"fn() -> String"},toTimeString:{"!type":"fn() -> String"},toUTCString:{"!type":"fn() -> String"},toISOString:{"!type":"fn() -> String"},toJSON:{"!type":"fn(key: String) -> Object"},toLocaleDateString:{"!type":"fn() -> String"},toLocaleTimeString:{"!type":"fn() -> String"},getTime:{"!type":"fn() -> Number"},getTimezoneOffset:{"!type":"fn() -> Number"},getDay:{"!type":"fn() -> Number"},getUTCDay:{"!type":"fn() -> Number"},
getFullYear:{"!type":"fn() -> Number"},getUTCFullYear:{"!type":"fn() -> Number"},getHours:{"!type":"fn() -> Number"},getUTCHours:{"!type":"fn() -> Number"},getMinutes:{"!type":"fn() -> Number"},getUTCMinutes:{"!type":"fn() -> Number"},getSeconds:{"!type":"fn() -> Number"},getUTCSeconds:{"!type":"fn() -> Number"},getMilliseconds:{"!type":"fn() -> Number"},getUTCMilliseconds:{"!type":"fn() -> Number"},getMonth:{"!type":"fn() -> Number"},getUTCMonth:{"!type":"fn() -> Number"},getDate:{"!type":"fn() -> Number"},
getUTCDate:{"!type":"fn() -> Number"},setTime:{"!type":"fn() -> Number"},setTimezoneOffset:{"!type":"fn() -> Number"},setDay:{"!type":"fn(dayOfWeek: Number) -> Number"},setUTCDay:{"!type":"fn(dayOfWeek: Number) -> Number"},setFullYear:{"!type":"fn(year: Number, month?: Number, date?: Number) -> Number"},setUTCFullYear:{"!type":"fn(year: Number, month?: Number, date?: Number) -> Number"},setHours:{"!type":"fn(hour: Number, min?: Number, sec?: Number, ms?: Number) -> Number"},setUTCHours:{"!type":"fn(hour: Number, min?: Number, sec?: Number, ms?: Number) -> Number"},
setMinutes:{"!type":"fn(min: Number, sec?: Number, ms?: Number) -> Number"},setUTCMinutes:{"!type":"fn(min: Number, sec?: Number, ms?: Number) -> Number"},setSeconds:{"!type":"fn(sec: Number, ms?: Number) -> Number"},setUTCSeconds:{"!type":"fn(sec: Number, ms?: Number) -> Number"},setMilliseconds:{"!type":"fn(ms: Number) -> Number"},setUTCMilliseconds:{"!type":"fn(ms: Number) -> Number"},setMonth:{"!type":"fn(month: Number, date?: Number) -> Number"},setUTCMonth:{"!type":"fn(month: Number, date?: Number) -> Number"},
setDate:{"!type":"fn(date: Number) -> Number"},setUTCDate:{"!type":"fn(date: Number) -> Number"},"!proto":"Object"},Date_obj:{"!type":"fn(val?: Date)",now:{"!type":"fn() -> Number"},parse:{"!type":"fn(dateString: String) -> Number"},UTC:{"!type":"fn(year: Number, month: Number, date?: Number, hrs?: Number, min?:Number, sec?:Number, ms?:Number) -> Number"},prototype:"Date"},Boolean:{"!proto":"Object"},Boolean_obj:{"!type":"fn(val?: Boolean)",prototype:"Boolean"},Array:{concat:{"!type":"fn(first: Array, rest: Array) -> Array"},
join:{"!type":"fn(separator: Object) -> String"},length:{"!type":"Number"},pop:{"!type":"fn() -> Object"},push:{"!type":"fn(vals: Object) -> Object"},reverse:{"!type":"fn() -> Array"},shift:{"!type":"fn() -> Object"},slice:{"!type":"fn(start: Number, deleteCount: Number, items: Object) -> Array"},splice:{"!type":"fn(start: Number, end: Number) -> Array"},sort:{"!type":"fn(sorter?: Object) -> Array"},unshift:{"!type":"fn(items: Object) -> Number"},indexOf:{"!type":"fn(searchElement: Object, fromIndex?: Number) -> Number"},
lastIndexOf:{"!type":"fn(searchElement: Object, fromIndex?: Number) -> Number"},every:{"!type":"fn(callbackFn: fn(elt: Object), thisArg?: Object) -> Boolean"},some:{"!type":"fn(callbackFn: fn(elt: Object), thisArg?: Object) -> Boolean"},forEach:{"!type":"fn(callbackFn: fn(elt: Object), thisArg?: Object) -> Object"},map:{"!type":"fn(callbackFn: fn(elt: Object) -> Object, thisArg?: Object) -> Array"},filter:{"!type":"fn(callbackFn: fn(elt: Object) -> Boolean, thisArg?: Object) -> Array"},reduce:{"!type":"fn(callbackFn: fn(elt: Object) -> Object, initialValue?: Object) -> Array"},
reduceRight:{"!type":"fn(callbackFn: fn(elt: Object) -> Object, initialValue?: Object) -> Array"},"!proto":"Object"},Array_obj:{"!type":"fn(val?: Array)",isArray:{"!type":"fn(obj: Object) -> Boolean"},prototype:"Array"},Function:{apply:{"!type":"fn(func: fn(), argArray?: Array) -> Object"},arguments:{"!type":"Arguments"},bind:{"!type":"fn(func: fn(), args: Object) -> Object"},call:{"!type":"fn(func: fn(), args: Object) -> Object"},caller:{"!type":"Function"},length:{"!type":"Number"},name:{"!type":"String"},
"!proto":"Object"},Function_obj:{"!type":"fn()",prototype:"Function"},Arguments:{callee:{"!type":"Function"},length:{"!type":"Number"},"!proto":"Object"},JSON:{parse:{"!type":"fn(str: String) -> Object"},stringify:{"!type":"fn(json: Object) -> String"},"!proto":"Object"},Math:{E:{"!type":"Number"},LN2:{"!type":"Number"},LN10:{"!type":"Number"},LOG2E:{"!type":"Number"},LOG10E:{"!type":"Number"},PI:{"!type":"Number"},SQRT1_2:{"!type":"Number"},SQRT2:{"!type":"Number"},abs:{"!type":"fn(val: Number) -> Number"},
acos:{"!type":"fn(val: Number) -> Number"},asin:{"!type":"fn(val: Number) -> Number"},atan:{"!type":"fn(val: Number) -> Number"},atan2:{"!type":"fn(val1: Number, val2: Number) -> Number"},ceil:{"!type":"fn(val: Number) -> Number"},cos:{"!type":"fn(val: Number) -> Number"},exp:{"!type":"fn(val: Number) -> Number"},floor:{"!type":"fn(val: Number) -> Number"},log:{"!type":"fn(val: Number) -> Number"},max:{"!type":"fn(val1: Number, val2: Number) -> Number"},min:{"!type":"fn(val1: Number, val2: Number) -> Number"},
pow:{"!type":"fn(x: Number, y: Number) -> Number"},random:{"!type":"fn() -> Number"},round:{"!type":"fn(val: Number) -> Number"},sin:{"!type":"fn(val: Number) -> Number"},sqrt:{"!type":"fn(val: Number) -> Number"},tan:{"!type":"fn(val: Number) -> Number"},"!proto":"Object"},Number:{toExponential:{"!type":"fn(digits: Number) -> String"},toFixed:{"!type":"fn(digits: Number) -> String"},toPrecision:{"!type":"fn(digits: Number) -> String"},"!proto":"Object"},Number_obj:{"!type":"fn(val?: Number)",MAX_VALUE:"Number",
MIN_VALUE:"Number",prototype:"Number"},Object:{toString:{"!type":"fn() -> String"},toLocaleString:{"!type":"fn() -> String"},valueOf:{"!type":"fn() -> Object"},hasOwnProperty:{"!type":"fn(property: String) -> Boolean"},isPrototypeOf:{"!type":"fn(object: Object) -> Boolean"},propertyIsEnumerable:{"!type":"fn(property: String) -> Boolean"}},Object_obj:{"!type":"fn(val?: Object)",create:{"!type":"fn(proto: Object, propertiesObject?: Object) -> Object"},defineProperty:{"!type":"fn(obj: Object, prop: String, descriptor: Object) -> Object"},
defineProperties:{"!type":"fn(obj: Object, props: Object) -> Object"},getOwnPropertyDescriptor:{"!type":"fn(obj: Object, prop: String) -> Object"},keys:{"!type":"fn(obj: Object) -> Array"},getOwnPropertyNames:{"!type":"fn(obj: Object) -> Array"},getPrototypeOf:{"!type":"fn(obj: Object) -> Object"},prototype:"Object"},String:{charAt:{"!type":"fn(index: Number) -> String"},charCodeAt:{"!type":"fn(index: Number) -> Number"},concat:{"!type":"fn(str: String) -> String"},indexOf:{"!type":"fn(searchString: String, start?: Number) -> Number"},
lastIndexOf:{"!type":"fn(searchString: String, start?: Number) -> Number"},length:{"!type":"Number"},localeCompare:{"!type":"fn(str: String) -> Number"},match:{"!type":"fn(regexp: String) -> Boolean"},replace:{"!type":"fn(searchValue: String, replaceValue: String) -> String"},search:{"!type":"fn(regexp: String) -> String"},slice:{"!type":"fn(start: Number, end: Number) -> String"},split:{"!type":"fn(separator: String, limit?: Number) -> [String]"},substring:{"!type":"fn(start: Number, end?: Number) -> String"},
toLocaleUpperCase:{"!type":"fn() -> String"},toLowerCase:{"!type":"fn() -> String"},toLocaleLowerCase:{"!type":"fn() -> String"},toUpperCase:{"!type":"fn() -> String"},trim:{"!type":"fn() -> String"},"!proto":"Object"},String_obj:{"!type":"fn(val?: Object)",fromCharCode:{"!type":"fn(num1: Number, rest: Number) -> String"},prototype:"String","!proto":"Object"}},decodeURI:{"!type":"fn(uri: String) -> String"},encodeURI:{"!type":"fn(uri: String) -> String"},eval:{"!type":"fn(toEval: String) -> Object"},
parseInt:{"!type":"fn(str: String, radix?: Number) -> Number"},parseFloat:{"!type":"fn(str: String, radix?: Number) -> Number"},Math:{"!type":"Math"},JSON:{"!type":"JSON"},Object:"Object_obj",Function:"Function_obj",Array:"Array_obj",Boolean:"Boolean_obj",Number:"Number_obj",Date:"Date_obj",RegExp:"RegExp_obj",String:"String_obj",Error:"Error_obj",undefined:{"!type":"?"},isNaN:{"!type":"fn(num: Number) -> Boolean"},isFinite:{"!type":"fn(num: Number) -> Boolean"},NaN:{"!type":"number"},Infinity:{"!type":"number"},
decodeURIComponent:{"!type":"fn(encodedURIString: String) -> String"},encodeURIComponent:{"!type":"fn(decodedURIString: String) -> String"},"this":{"!type":"<top>"}}});
define("javascript/contentAssist/indexFiles/nodeIndex",[],function(){return{console:"Console",process:"Process","!define":{assert:{fail:{"!type":"fn(actual: Object, expected: Object, message: Object, operator: Object)"},assert:{"!type":"fn(value: Object, message: Object)"},ok:{"!type":"fn(value: Object, message?: Object)"},equal:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},notEqual:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},deepEqual:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},
notDeepEqual:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},strictEqual:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},notStrictEqual:{"!type":"fn(actual: Object, expected: Object, message?: Object)"},"throws":{"!type":"fn(block: Object, error?: Object, message?: Object)"},doesNotThrow:{"!type":"fn(block: Object, message?: Object)"},ifError:{"!type":"fn(value: Object)"}},buffer:{INSPECT_MAX_BYTES:{"!type":"Number"},Buffer:{"!type":"fn()",prototype:{write:{"!type":"fn(string: Object, offset?: Object, length?: Object, encoding?: Object)"},
toString:{"!type":"fn(encoding?: Object, start?: Object, end?: Object)"},toJSON:{"!type":"fn()"},copy:{"!type":"fn(targetBuffer: Object, targetStart?: Object, sourceStart?: Object, sourceEnd?: Object)"},slice:{"!type":"fn(start?: Object, end?: Object)"},readUInt8:{"!type":"fn(offset: Object, noAssert?: Object)"},readUInt16LE:{"!type":"fn(offset: Object, noAssert?: Object)"},readUInt16BE:{"!type":"fn(offset: Object, noAssert?: Object)"},readUInt32LE:{"!type":"fn(offset: Object, noAssert?: Object)"},
readUInt32BE:{"!type":"fn(offset: Object, noAssert?: Object)"},readInt8:{"!type":"fn(offset: Object, noAssert?: Object)"},readInt16LE:{"!type":"fn(offset: Object, noAssert?: Object)"},readInt16BE:{"!type":"fn(offset: Object, noAssert?: Object)"},readInt32LE:{"!type":"fn(offset: Object, noAssert?: Object)"},readInt32BE:{"!type":"fn(offset: Object, noAssert?: Object)"},readFloatLE:{"!type":"fn(offset: Object, noAssert?: Object)"},readFloatBE:{"!type":"fn(offset: Object, noAssert?: Object)"},readDoubleLE:{"!type":"fn(offset: Object, noAssert?: Object)"},
readDoubleBE:{"!type":"fn(offset: Object, noAssert?: Object)"},writeUInt8:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeUInt16LE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeUInt16BE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeUInt32LE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeUInt32BE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeInt8:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},
writeInt16LE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeInt16BE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeInt32LE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeInt32BE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeFloatLE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeFloatBE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},writeDoubleLE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},
writeDoubleBE:{"!type":"fn(value: Object, offset: Object, noAssert?: Object)"},fill:{"!type":"fn(value: Object, offset?: Object, end?: Object)"},length:{"!type":"Number"}},isEncoding:{"!type":"fn(encoding: Object)"},isBuffer:{"!type":"fn(obj: Object)"},byteLength:{"!type":"fn(string: Object, encoding?: Object)"},concat:{"!type":"fn(list: Object, totalLength?: Object)"}},SlowBuffer:{"!type":"fn()",prototype:{}}},child_process:{spawn:{"!type":"fn(command: Object, args?: Object, options?: Object) -> +ChildProcess"},
exec:{"!type":"fn(command: Object, options: Object, callback: Object) -> +ChildProcess"},execFile:{"!type":"fn(file: Object, args: Object, options: Object, callback: Object) -> +ChildProcess"},fork:{"!type":"fn(modulePath: Object, args?: Object, options?: Object) -> +ChildProcess"}},ChildProcess:{"!type":"fn()",prototype:{kill:{"!type":"fn(signal?: String)"},unref:{"!type":"fn()"},send:{"!type":"fn(message: Object, sendHandle?: Object)"},disconnect:{"!type":"fn()"},stdin:{"!type":"Object"},stdout:{"!type":"Object"},
stderr:{"!type":"Object"},pid:{"!type":"Number"}}},cluster:{setupMaster:{"!type":"fn(settings?: Object)"},fork:{"!type":"fn(env?: Object) -> Workerobject"},disconnect:{"!type":"fn(callback?: Object)"},settings:{"!type":"Object"},isMaster:{"!type":"Object"},isWorker:{"!type":"Object"},worker:{"!type":"Object"},workers:{"!type":"Object"},Worker:{"!type":"fn()",prototype:{send:{"!type":"fn(message: Object, sendHandle?: Object)"},kill:{"!type":"fn(signal?: Object)"},disconnect:{"!type":"fn()"},id:{"!type":"Object"},
process:{"!type":"Object"},suicide:{"!type":"Object"}}}},Console:{log:{"!type":"fn(data?: Object, other?: Object)"},info:{"!type":"fn(data?: Object, other?: Object)"},error:{"!type":"fn(data?: Object, other?: Object)"},warn:{"!type":"fn(data?: Object, other?: Object)"},dir:{"!type":"fn(obj: Object)"},time:{"!type":"fn(label: Object)"},timeEnd:{"!type":"fn(label: Object)"},trace:{"!type":"fn(label: Object)"},assert:{"!type":"fn(expression: Object, message?: Object)"}},crypto:{getCiphers:{"!type":"fn()"},
getHashes:{"!type":"fn()"},createCredentials:{"!type":"fn(details: Object)"},createHash:{"!type":"fn(algorithm: Object)"},createHmac:{"!type":"fn(algorithm: Object, key: Object)"},createCipher:{"!type":"fn(algorithm: Object, password: Object)"},createCipheriv:{"!type":"fn(algorithm: Object, key: Object, iv: Object)"},createDecipher:{"!type":"fn(algorithm: Object, password: Object)"},createDecipheriv:{"!type":"fn(algorithm: Object, key: Object, iv: Object)"},createSign:{"!type":"fn(algorithm: Object)"},
createVerify:{"!type":"fn(algorithm: Object)"},createDiffieHellman:{"!type":"fn(prime: Object, encoding?: Object)"},getDiffieHellman:{"!type":"fn(group_name: Object)"},pbkdf2:{"!type":"fn(password: Object, salt: Object, iterations: Object, keylen: Object, callback: Object)"},pbkdf2Sync:{"!type":"fn(password: Object, salt: Object, iterations: Object, keylen: Object)"},randomBytes:{"!type":"fn(size: Object, callback?: Object)"},pseudoRandomBytes:{"!type":"fn(size: Object, callback?: Object)"},DEFAULT_ENCODING:{"!type":"Object"},
Hash:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object, input_encoding?: Object)"},digest:{"!type":"fn(encoding?: Object)"}}},Hmac:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object)"},digest:{"!type":"fn(encoding?: Object)"}}},Cipher:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object, input_encoding?: Object, output_encoding?: Object)"},"final":{"!type":"fn(output_encoding?: Object)"},setAutoPadding:{"!type":"fn(auto_padding: Object)"}}},Decipher:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object, input_encoding?: Object, output_encoding?: Object)"},
"final":{"!type":"fn(output_encoding?: Object)"},setAutoPadding:{"!type":"fn(auto_padding: Object)"}}},Sign:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object)"},sign:{"!type":"fn(private_key: Object, output_format?: Object)"}}},Verify:{"!type":"fn()",prototype:{update:{"!type":"fn(data: Object)"},verify:{"!type":"fn(object: Object, signature: Object, signature_format?: Object)"}}},DiffieHellman:{"!type":"fn()",prototype:{generateKeys:{"!type":"fn(encoding?: Object)"},computeSecret:{"!type":"fn(other_public_key: Object, input_encoding?: Object, output_encoding?: Object)"},
getPrime:{"!type":"fn(encoding?: Object)"},getGenerator:{"!type":"fn(encoding?: Object)"},getPublicKey:{"!type":"fn(encoding?: Object)"},getPrivateKey:{"!type":"fn(encoding?: Object)"},setPublicKey:{"!type":"fn(public_key: Object, encoding?: Object)"},setPrivateKey:{"!type":"fn(private_key: Object, encoding?: Object)"}}}},dgram:{createSocket:{"!type":"fn(type: Object, callback?: Object)"},Socket:{"!type":"fn()",prototype:{send:{"!type":"fn(buf: Object, offset: Object, length: Object, port: Object, address: Object, callback?: Object)"},
bind:{"!type":"fn(port: Object, address?: Object, callback?: Object)"},close:{"!type":"fn()"},address:{"!type":"fn()"},setBroadcast:{"!type":"fn(flag: Object)"},setTTL:{"!type":"fn(ttl: Object)"},setMulticastTTL:{"!type":"fn(ttl: Object)"},setMulticastLoopback:{"!type":"fn(flag: Object)"},addMembership:{"!type":"fn(multicastAddress: Object, multicastInterface?: Object)"},dropMembership:{"!type":"fn(multicastAddress: Object, multicastInterface?: Object)"},unref:{"!type":"fn()"},ref:{"!type":"fn()"}}}},
dns:{lookup:{"!type":"fn(domain: Object, family: Object, callback: Object)"},resolve:{"!type":"fn(domain: Object, rrtype: Object, callback: Object)"},resolve4:{"!type":"fn(domain: Object, callback: Object)"},resolve6:{"!type":"fn(domain: Object, callback: Object)"},resolveMx:{"!type":"fn(domain: Object, callback: Object)"},resolveTxt:{"!type":"fn(domain: Object, callback: Object)"},resolveSrv:{"!type":"fn(domain: Object, callback: Object)"},resolveNs:{"!type":"fn(domain: Object, callback: Object)"},
resolveCname:{"!type":"fn(domain: Object, callback: Object)"},reverse:{"!type":"fn(ip: Object, callback: Object)"}},domain:{create:{"!type":"fn() -> +domain.Domain"},createDomain:{"!type":"fn() -> +domain.Domain"},Domain:{"!type":"fn()",prototype:{run:{"!type":"fn(fn: Object)"},add:{"!type":"fn(emitter: Object)"},remove:{"!type":"fn(emitter: Object)"},bind:{"!type":"fn(callback: Object) -> Function"},intercept:{"!type":"fn(callback: Object) -> Function"},enter:{"!type":"fn()"},exit:{"!type":"fn()"},
dispose:{"!type":"fn()"},members:{"!type":"Object"}}}},events:{EventEmitter:{"!type":"fn()",prototype:{addListener:{"!type":"fn(event: Object, listener: Object)"},on:{"!type":"fn(event: Object, listener: Object)"},once:{"!type":"fn(event: Object, listener: Object)"},removeListener:{"!type":"fn(event: Object, listener: Object)"},removeAllListeners:{"!type":"fn(event?: Object)"},setMaxListeners:{"!type":"fn(n: Object)"},listeners:{"!type":"fn(event: Object)"},emit:{"!type":"fn(event: Object, arg1?: Object, arg2?: Object, other?: Object)"}},
listenerCount:{"!type":"fn(emitter: Object, event: Object)"}}},fs:{rename:{"!type":"fn(oldPath: Object, newPath: Object, callback: Object)"},renameSync:{"!type":"fn(oldPath: Object, newPath: Object)"},ftruncate:{"!type":"fn(fd: Object, len: Object, callback: Object)"},ftruncateSync:{"!type":"fn(fd: Object, len: Object)"},truncate:{"!type":"fn(path: Object, len: Object, callback: Object)"},truncateSync:{"!type":"fn(path: Object, len: Object)"},chown:{"!type":"fn(path: Object, uid: Object, gid: Object, callback: Object)"},
chownSync:{"!type":"fn(path: Object, uid: Object, gid: Object)"},fchown:{"!type":"fn(fd: Object, uid: Object, gid: Object, callback: Object)"},fchownSync:{"!type":"fn(fd: Object, uid: Object, gid: Object)"},lchown:{"!type":"fn(path: Object, uid: Object, gid: Object, callback: Object)"},lchownSync:{"!type":"fn(path: Object, uid: Object, gid: Object)"},chmod:{"!type":"fn(path: Object, mode: Object, callback: Object)"},chmodSync:{"!type":"fn(path: Object, mode: Object)"},fchmod:{"!type":"fn(fd: Object, mode: Object, callback: Object)"},
fchmodSync:{"!type":"fn(fd: Object, mode: Object)"},lchmod:{"!type":"fn(path: Object, mode: Object, callback: Object)"},lchmodSync:{"!type":"fn(path: Object, mode: Object)"},stat:{"!type":"fn(path: Object, callback: Object)"},lstat:{"!type":"fn(path: Object, callback: Object)"},fstat:{"!type":"fn(fd: Object, callback: Object)"},statSync:{"!type":"fn(path: Object)"},lstatSync:{"!type":"fn(path: Object)"},fstatSync:{"!type":"fn(fd: Object)"},link:{"!type":"fn(srcpath: Object, dstpath: Object, callback: Object)"},
linkSync:{"!type":"fn(srcpath: Object, dstpath: Object)"},symlink:{"!type":"fn(srcpath: Object, dstpath: Object, type: Object, callback: Object)"},symlinkSync:{"!type":"fn(srcpath: Object, dstpath: Object, type?: Object)"},readlink:{"!type":"fn(path: Object, callback: Object)"},readlinkSync:{"!type":"fn(path: Object)"},realpath:{"!type":"fn(path: Object, cache: Object, callback: Object)"},realpathSync:{"!type":"fn(path: Object, cache?: Object)"},unlink:{"!type":"fn(path: Object, callback: Object)"},
unlinkSync:{"!type":"fn(path: Object)"},rmdir:{"!type":"fn(path: Object, callback: Object)"},rmdirSync:{"!type":"fn(path: Object)"},mkdir:{"!type":"fn(path: Object, mode: Object, callback: Object)"},mkdirSync:{"!type":"fn(path: Object, mode?: Object)"},readdir:{"!type":"fn(path: Object, callback: Object)"},readdirSync:{"!type":"fn(path: Object)"},close:{"!type":"fn(fd: Object, callback: Object)"},closeSync:{"!type":"fn(fd: Object)"},open:{"!type":"fn(path: Object, flags: Object, mode: Object, callback: Object)"},
openSync:{"!type":"fn(path: Object, flags: Object, mode?: Object) -> Number"},utimes:{"!type":"fn(path: Object, atime: Object, mtime: Object)"},utimesSync:{"!type":"fn(path: Object, atime: Object, mtime: Object)"},futimes:{"!type":"fn(fd: Object, atime: Object, mtime: Object)"},futimesSync:{"!type":"fn(fd: Object, atime: Object, mtime: Object)"},fsync:{"!type":"fn(fd: Object, callback: Object)"},fsyncSync:{"!type":"fn(fd: Object)"},write:{"!type":"fn(fd: Object, buffer: Object, offset: Object, length: Object, position: Object, callback: Object)"},
writeSync:{"!type":"fn(fd: Object, buffer: Object, offset: Object, length: Object, position: Object)"},read:{"!type":"fn(fd: Object, buffer: Object, offset: Object, length: Object, position: Object, callback: Object)"},readSync:{"!type":"fn(fd: Object, buffer: Object, offset: Object, length: Object, position: Object)"},readFile:{"!type":"fn(filename: Object, options: Object, callback: Object)"},readFileSync:{"!type":"fn(filename: Object, options?: Object)"},writeFile:{"!type":"fn(filename: Object, data: Object, options: Object, callback: Object)"},
writeFileSync:{"!type":"fn(filename: Object, data: Object, options?: Object)"},appendFile:{"!type":"fn(filename: Object, data: Object, options: Object, callback: Object)"},appendFileSync:{"!type":"fn(filename: Object, data: Object, options?: Object)"},watchFile:{"!type":"fn(filename: Object, options: Object, listener: Object)"},unwatchFile:{"!type":"fn(filename: Object, listener?: Object)"},watch:{"!type":"fn(filename: Object, options?: Object, listener?: Object)"},exists:{"!type":"fn(path: Object, callback: Object)"},
existsSync:{"!type":"fn(path: Object)"},createReadStream:{"!type":"fn(path: Object, options?: Object)"},createWriteStream:{"!type":"fn(path: Object, options?: Object)"},Stats:{"!type":"fn()",prototype:{}},ReadStream:{"!type":"fn()",prototype:{}},WriteStream:{"!type":"fn()",prototype:{bytesWritten:{"!type":"Object"}}},FSWatcher:{"!type":"fn()",prototype:{close:{"!type":"fn()"}}}},http:{createServer:{"!type":"fn(requestListener?: Object)"},createClient:{"!type":"fn(port?: Object, host?: Object)"},request:{"!type":"fn(options: Object, callback: Object)"},
get:{"!type":"fn(options: Object, callback: Object)"},STATUS_CODES:{"!type":"Object"},globalAgent:{"!type":"Object"},IncomingMessage:{"!type":"Object"},Server:{"!type":"fn()",prototype:{listen:{"!type":"fn(handle: Object, callback?: Object)"},close:{"!type":"fn(callback?: Object)"},setTimeout:{"!type":"fn(msecs: Object, callback: Object)"},maxHeadersCount:{"!type":"Object"},timeout:{"!type":"Object"}}},ServerResponse:{"!type":"fn()",prototype:{writeContinue:{"!type":"fn()"},writeHead:{"!type":"fn(statusCode: Object, reasonPhrase?: Object, headers?: Object)"},
setTimeout:{"!type":"fn(msecs: Object, callback: Object)"},setHeader:{"!type":"fn(name: Object, value: Object)"},getHeader:{"!type":"fn(name: Object)"},removeHeader:{"!type":"fn(name: Object)"},write:{"!type":"fn(chunk: Object, encoding?: Object)"},addTrailers:{"!type":"fn(headers: Object)"},end:{"!type":"fn(data?: Object, encoding?: Object)"},statusCode:{"!type":"Object"},headersSent:{"!type":"Object"},sendDate:{"!type":"Object"}}},Agent:{"!type":"fn()",prototype:{maxSockets:{"!type":"Object"},sockets:{"!type":"Object"},
requests:{"!type":"Object"}}},ClientRequest:{"!type":"fn()",prototype:{write:{"!type":"fn(chunk: Object, encoding?: Object)"},end:{"!type":"fn(data?: Object, encoding?: Object)"},abort:{"!type":"fn()"},setTimeout:{"!type":"fn(timeout: Object, callback?: Object)"},setNoDelay:{"!type":"fn(noDelay?: Object)"},setSocketKeepAlive:{"!type":"fn(enable?: Object, initialDelay?: Object)"}}}},https:{createServer:{"!type":"fn(options: Object, requestListener?: Object)"},request:{"!type":"fn(options: Object, callback: Object)"},
get:{"!type":"fn(options: Object, callback: Object)"},globalAgent:{"!type":"Object"},Server:{"!type":"fn()",prototype:{}},Agent:{"!type":"fn()",prototype:{}}},net:{createServer:{"!type":"fn(options?: Object, connectionListener?: Object)"},connect:{"!type":"fn(path: Object, connectListener?: Object)"},createConnection:{"!type":"fn(path: Object, connectListener?: Object)"},isIP:{"!type":"fn(input: Object)"},isIPv4:{"!type":"fn(input: Object)"},isIPv6:{"!type":"fn(input: Object)"},Server:{"!type":"fn()",
prototype:{listen:{"!type":"fn(handle: Object, callback?: Object)"},close:{"!type":"fn(callback?: Object)"},address:{"!type":"fn()"},unref:{"!type":"fn()"},ref:{"!type":"fn()"},getConnections:{"!type":"fn(callback: Object)"},maxConnections:{"!type":"Object"},connections:{"!type":"Object"}}},Socket:{"!type":"fn()",prototype:{Socket:{"!type":"fn(options?: Object)"},connect:{"!type":"fn(path: Object, connectListener?: Object)"},setEncoding:{"!type":"fn(encoding?: Object)"},write:{"!type":"fn(data: Object, encoding?: Object, callback?: Object)"},
end:{"!type":"fn(data?: Object, encoding?: Object)"},destroy:{"!type":"fn()"},pause:{"!type":"fn()"},resume:{"!type":"fn()"},setTimeout:{"!type":"fn(timeout: Object, callback?: Object)"},setNoDelay:{"!type":"fn(noDelay?: Object)"},setKeepAlive:{"!type":"fn(enable?: Object, initialDelay?: Object)"},address:{"!type":"fn()"},unref:{"!type":"fn()"},ref:{"!type":"fn()"},bufferSize:{"!type":"Object"},remoteAddress:{"!type":"Object"},remotePort:{"!type":"Object"},localAddress:{"!type":"Object"},localPort:{"!type":"Object"},
bytesRead:{"!type":"Object"},bytesWritten:{"!type":"Object"}}}},os:{tmpdir:{"!type":"fn()"},endianness:{"!type":"fn()"},hostname:{"!type":"fn()"},type:{"!type":"fn()"},platform:{"!type":"fn()"},arch:{"!type":"fn()"},release:{"!type":"fn()"},uptime:{"!type":"fn()"},loadavg:{"!type":"fn()"},totalmem:{"!type":"fn()"},freemem:{"!type":"fn()"},cpus:{"!type":"fn()"},networkInterfaces:{"!type":"fn()"},EOL:{"!type":"Object"}},path:{normalize:{"!type":"fn(p: Object)"},join:{"!type":"fn(path1?: Object, path2?: Object, other?: Object)"},
resolve:{"!type":"fn(from: Object, to: Object)"},relative:{"!type":"fn(from: Object, to: Object)"},dirname:{"!type":"fn(p: Object)"},basename:{"!type":"fn(p: Object, ext?: Object)"},extname:{"!type":"fn(p: Object)"},sep:{"!type":"Object"},delimiter:{"!type":"Object"}},Process:{abort:{"!type":"fn()"},chdir:{"!type":"fn(directory: Object)"},cwd:{"!type":"fn()"},exit:{"!type":"fn(code?: Object)"},getgid:{"!type":"fn()"},setgid:{"!type":"fn(id: Object)"},getuid:{"!type":"fn()"},setuid:{"!type":"fn(id: Object)"},
getgroups:{"!type":"fn()"},setgroups:{"!type":"fn(groups: Object)"},initgroups:{"!type":"fn(user: Object, extra_group: Object)"},kill:{"!type":"fn(pid: Object, signal?: Object)"},memoryUsage:{"!type":"fn()"},nextTick:{"!type":"fn(callback: Object)"},umask:{"!type":"fn(mask?: Object)"},uptime:{"!type":"fn()"},hrtime:{"!type":"fn()"},stdout:{"!type":"+stream.Writable"},stderr:{"!type":"Object"},stdin:{"!type":"Object"},argv:{"!type":"Object"},execPath:{"!type":"Object"},execArgv:{"!type":"Object"},
env:{"!type":"Object"},version:{"!type":"Object"},versions:{"!type":"Object"},config:{"!type":"Object"},pid:{"!type":"Object"},title:{"!type":"Object"},arch:{"!type":"Object"},platform:{"!type":"Object"},maxTickDepth:{"!type":"Object"}},punycode:{decode:{"!type":"fn(string: Object)"},encode:{"!type":"fn(string: Object)"},toUnicode:{"!type":"fn(domain: Object)"},toASCII:{"!type":"fn(domain: Object)"},ucs2:{"!type":"Object"},version:{"!type":"Object"}},querystring:{stringify:{"!type":"fn(obj: Object, sep?: Object, eq?: Object)"},
parse:{"!type":"fn(str: Object, sep?: Object, eq?: Object, options?: Object)"},escape:{"!type":"Object"},unescape:{"!type":"Object"}},readline:{createInterface:{"!type":"fn(options: Object)"},Interface:{"!type":"fn()",prototype:{setPrompt:{"!type":"fn(prompt: Object, length: Object)"},prompt:{"!type":"fn(preserveCursor?: Object)"},question:{"!type":"fn(query: Object, callback: Object)"},pause:{"!type":"fn()"},resume:{"!type":"fn()"},close:{"!type":"fn()"},write:{"!type":"fn(data: Object, key?: Object)"}}}},
repl:{start:{"!type":"fn(options: Object)"}},stream:{Readable:{"!type":"fn()",prototype:{read:{"!type":"fn(size?: Object) -> String"},setEncoding:{"!type":"fn(encoding: Object)"},resume:{"!type":"fn()"},pause:{"!type":"fn()"},pipe:{"!type":"fn(destination: Object, options?: Object)"},unpipe:{"!type":"fn(destination?: Object)"},unshift:{"!type":"fn(chunk: Object)"},wrap:{"!type":"fn(stream: Object)"}}},Writable:{"!type":"fn()",prototype:{write:{"!type":"fn(chunk: Object, encoding?: Object, callback?: Object) -> Boolean"},
end:{"!type":"fn(chunk?: Object, encoding?: Object, callback?: Object)"}}},Duplex:{"!type":"fn()",prototype:{}},Transform:{"!type":"fn()",prototype:{}}},string_decoder:{StringDecoder:{"!type":"fn()",prototype:{write:{"!type":"fn(buffer: Object)"},end:{"!type":"fn()"}}}},timers:{setTimeout:{"!type":"fn(callback: Object, delay: Object, arg?: Object, other?: Object)"},clearTimeout:{"!type":"fn(timeoutId: Object)"},setInterval:{"!type":"fn(callback: Object, delay: Object, arg?: Object, other?: Object)"},
clearInterval:{"!type":"fn(intervalId: Object)"},unref:{"!type":"fn()"},ref:{"!type":"fn()"},setImmediate:{"!type":"fn(callback: Object, arg?: Object, other?: Object)"},clearImmediate:{"!type":"fn(immediateId: Object)"}},tls:{getCiphers:{"!type":"fn()"},createServer:{"!type":"fn(options: Object, secureConnectionListener?: Object)"},connect:{"!type":"fn(port: Object, host?: Object, options?: Object, callback?: Object)"},createSecurePair:{"!type":"fn(credentials?: Object, isServer?: Object, requestCert?: Object, rejectUnauthorized?: Object)"},
SLAB_BUFFER_SIZE:{"!type":"Object"},SecurePair:{"!type":"fn()",prototype:{}},Server:{"!type":"fn()",prototype:{listen:{"!type":"fn(port: Object, host?: Object, callback?: Object)"},close:{"!type":"fn()"},address:{"!type":"fn()"},addContext:{"!type":"fn(hostname: Object, credentials: Object)"},maxConnections:{"!type":"Object"},connections:{"!type":"Object"}}},CryptoStream:{"!type":"fn()",prototype:{bytesWritten:{"!type":"Object"}}},CleartextStream:{"!type":"fn()",prototype:{getPeerCertificate:{"!type":"fn()"},
getCipher:{"!type":"fn()"},address:{"!type":"fn()"},authorized:{"!type":"Object"},authorizationError:{"!type":"Object"},remoteAddress:{"!type":"Object"},remotePort:{"!type":"Object"}}}},tty:{isatty:{"!type":"fn(fd: Object)"},setRawMode:{"!type":"fn(mode: Object)"},ReadStream:{"!type":"fn()",prototype:{setRawMode:{"!type":"fn(mode: Object)"},isRaw:{"!type":"Object"}}},WriteStream:{"!type":"fn()",prototype:{columns:{"!type":"Object"},rows:{"!type":"Object"}}}},url:{parse:{"!type":"fn(urlStr: Object, parseQueryString?: Object, slashesDenoteHost?: Object)"},
format:{"!type":"fn(urlObj: Object)"},resolve:{"!type":"fn(from: Object, to: Object)"}},util:{format:{"!type":"fn(format: Object, other?: Object)"},debug:{"!type":"fn(string: Object)"},error:{"!type":"fn(other?: Object)"},puts:{"!type":"fn(other?: Object)"},print:{"!type":"fn(other?: Object)"},log:{"!type":"fn(string: Object)"},inspect:{"!type":"fn(object: Object, options?: Object)"},isArray:{"!type":"fn(object: Object)"},isRegExp:{"!type":"fn(object: Object)"},isDate:{"!type":"fn(object: Object)"},
isError:{"!type":"fn(object: Object)"},pump:{"!type":"fn(readableStream: Object, writableStream: Object, callback?: Object)"},inherits:{"!type":"fn(constructor: Object, superConstructor: Object)"}},vm:{runInThisContext:{"!type":"fn(code: Object, filename?: Object)"},runInNewContext:{"!type":"fn(code: Object, sandbox?: Object, filename?: Object)"},runInContext:{"!type":"fn(code: Object, context: Object, filename?: Object)"},createContext:{"!type":"fn(initSandbox?: Object)"},createScript:{"!type":"fn(code: Object, filename?: Object)"},
Script:{"!type":"fn()",prototype:{runInThisContext:{"!type":"fn()"},runInNewContext:{"!type":"fn(sandbox?: Object)"}}}},zlib:{createGzip:{"!type":"fn(options?: Object)"},createGunzip:{"!type":"fn(options?: Object)"},createDeflate:{"!type":"fn(options?: Object)"},createInflate:{"!type":"fn(options?: Object)"},createDeflateRaw:{"!type":"fn(options?: Object)"},createInflateRaw:{"!type":"fn(options?: Object)"},createUnzip:{"!type":"fn(options?: Object)"},deflate:{"!type":"fn(buf: Object, callback: Object)"},
deflateRaw:{"!type":"fn(buf: Object, callback: Object)"},gzip:{"!type":"fn(buf: Object, callback: Object)"},gunzip:{"!type":"fn(buf: Object, callback: Object)"},inflate:{"!type":"fn(buf: Object, callback: Object)"},inflateRaw:{"!type":"fn(buf: Object, callback: Object)"},unzip:{"!type":"fn(buf: Object, callback: Object)"},Zlib:{"!type":"fn()",prototype:{flush:{"!type":"fn(callback: Object)"},reset:{"!type":"fn()"}}},Gzip:{"!type":"fn()",prototype:{}},Gunzip:{"!type":"fn()",prototype:{}},Deflate:{"!type":"fn()",
prototype:{}},Inflate:{"!type":"fn()",prototype:{}},DeflateRaw:{"!type":"fn()",prototype:{}},InflateRaw:{"!type":"fn()",prototype:{}},Unzip:{"!type":"fn()",prototype:{}}},TimeoutID:{},IntervalID:{}},"!name":"node","this":"<top>",global:"<top>",Buffer:"buffer.Buffer",require:{"!type":"fn(name: String)"},__filename:"String",__dirname:"String",module:{exports:"Object",id:"String",filename:"String",loaded:"String",parent:"Object",children:"[Object]"},exports:"Object",setTimeout:{"!type":"fn(cb: Object, ms: Number) -> TimeoutID"},
clearTimeout:{"!type":"fn(t: TimeoutID)"},setInterval:{"!type":"fn(cb: Object, ms: Number) -> IntervalID"},clearInterval:{"!type":"fn(t: IntervalID)"}}});
define("javascript/contentAssist/typesFromIndexFile","doctrine/doctrine,javascript/contentAssist/indexFiles/browserIndex,javascript/contentAssist/indexFiles/ecma5Index,javascript/contentAssist/indexFiles/nodeIndex,javascript/contentAssist/typeUtils,orion/Deferred".split(","),function(a,d,e,k,h,c){function l(b){if(h.isArrayType(b))return doctrine.type.stringify(b,{compact:!0});if(!b.typeObj)throw Error("No typeObj in "+b);return b.typeObj.type==="FunctionType"?doctrine.type.stringify(b.typeObj,{compact:!0}):
b.typeObj.name}function g(b,a,c){var d,b=b.substring(3,b.length).replace(/\s+/g,"");for(d="";b.charAt(0)!==")";){var i=b.indexOf(":"),f=b.slice(0,i),p=f[f.length-1]==="?";p&&(f=f.slice(0,f.length-1));var b=b.slice(i+1,b.length),e=i=null;b.charAt(0)==="f"&&b.charAt(1)==="n"?(e=b.indexOf(")"),i=b.indexOf(",",e)):i=b.indexOf(",");var g=null;i!==-1?g=i:(g=null,g=e?b.indexOf("->",b.indexOf(")",e+1)):b.indexOf("->"),g=g!==-1?g-1:b.length-1);e=b.slice(0,g);e=q(c,e);d+=f+":"+l(e);p&&(d+="=");i!==-1?(d+=",",
b=b.slice(g+1,b.length)):b=b.slice(g,b.length)}var b=b.slice(1,b.length),B;b!==""?B=l(q(c,b.substring(2,b.length))):a&&(B=a);a="function(";!b&&B&&h.isUpperCaseChar(B)&&(a+="new:"+B,d&&(a+=","));a+=d+"):"+B;return a}function q(b,a,c){if(typeof a==="string"){if(r[a])return new h.Definition(r[a]);else if(a==="?")return c==="undefined"?new h.Definition({name:"undefined",type:"NameExpression"}):c?new h.Definition(c):new h.Definition("Object");else if(a==="<top>")return new h.Definition("Global");else if(a[0]===
"$")return new h.Definition(c);else if(a.slice(0,2)==="fn")return new h.Definition(g(a,c,b));else if(a[0]==="[")return b=q(b,a.slice(1,a.length-1)),b.typeObj&&b.typeObj.name==="Object"?new h.Definition("Array"):h.createAppliedArray(b.typeObj);else if(a.slice(0,7)==="!custom"||a.slice(0,5)==="!this"||a.slice(0,2)==="!0")return new h.Definition("Object");else if(a.slice(0,1)==="!")throw"unhandled special case "+a;a.indexOf(".")!==-1&&(a=a.replace(/\./g,".."));a.slice(0,1)==="+"&&(a=a.slice(1,a.length)+
"..prototype");return new h.Definition(a)}else{var d=a,i={},f,e;for(e in d)if(Object.prototype.hasOwnProperty.call(d,e))if(e==="!type"){if(f=q(b,d[e],c),h.isFunctionOrConstructor(f.typeObj))i.$$fntype=f.typeObj,f=c?new h.Definition(c):new h.Definition(w+z++)}else if(e==="!proto")i.$$proto=q(b,d[e]);else if(!(e==="!url"||e==="!stdProto"||e==="!effects"||e==="!doc"))if(e[0]==="!")throw"didn't handle special property "+e;else e==="prototype"?(i.$$prototype=q(b,d[e]),i.$$newtype=i.$$prototype):i[e]=q(b,
d[e]);if(i.$$prototype&&i.$$fntype&&typeof d.prototype==="string")i.$$fntype.result.name=i.$$prototype.typeObj.name;f||(f=c?new h.Definition(c):new h.Definition(w+z++));c=f;if((d=c.typeObj.name)&&d!=="Global"&&(!a["!type"]||!p.test(a["!type"])&&!(a["!type"].slice(0,1)==="["||a["!type"].slice(0,1)==="+")))if(d==="Object"){var a={},B;for(B in i)Object.prototype.hasOwnProperty.call(i,B)&&(a["$_$"+B]=i[B]);a.$$isBuiltin=!0;b[d]=a}else{if(b[d])throw"type "+d+" defined twice in index file";i.$$isBuiltin=
!0;b[d]=i}return c}}function j(b,a,c){for(var d in b)if(Object.prototype.hasOwnProperty.call(b,d)&&d!=="!name")if(d==="!define"){var i=b[d],f;for(f in i)Object.prototype.hasOwnProperty.call(i,f)&&q(c,i[f],f)}else a[d]=typeof b[d]==="string"?q(c,{"!type":b[d]},d):q(c,b[d],d)}function b(b,a){var c={},d=Object.getPrototypeOf(b.Global);Object.keys(d).forEach(function(b){c[b]=d[b]});Object.keys(a.globals).forEach(function(b){c[b]=a.globals[b]});f.prototype=c;b.Global=new f;f.prototype=v;Object.keys(a.types).forEach(function(c){c!==
"Global"&&(b[c]=a.types[c])});return b}function s(b,a){if(!b||!a)throw Error("Missing parameter");var c=B[b];c||(c={globals:{},types:{}},j(a,c.globals,c.types),B[b]=c);return c}var f=function(){},v={};f.prototype=v;var a=function(){this.Global=new f},o={};a.prototype=o;var r={number:"Number",bool:"Boolean",string:"String"},w=h.GEN_NAME+"index~",z=0,p=/^[_$a-zA-Z\xA0-\uFFFF]([_$a-zA-Z0-9\.\xA0-\uFFFF])*$/;v.$$proto=new h.Definition("Object");var i=null,B={};return{Types:a,getGlobalsAndTypes:s,addLibrary:function(a,
c){var i;if(c==="browser")i=d;else if(c==="node")i=k;else throw Error("unknown built-in library name: "+c);i=s(c,i);return b(a,i)},ternSig2ClosureSig:g,init:function(){if(!i){var b=new c;j(e,v,o);b.resolve();i=b.promise}return i},parseType:function(b,a){var c={};return{def:q(c,b,a),typeInfo:c}},addIndexData:function(a,c){var d={globals:{},types:{}};j(a,d.globals,d.types);b(c,d)}}});
define("javascript/contentAssist/typeEnvironment",["javascript/contentAssist/typeUtils","javascript/contentAssist/typesFromIndexFile","orion/Deferred"],function(a,d,e){function k(a,d){return!(d in a)?!1:Object.hasOwnProperty(d)?!a.hasOwnProperty(d):Object.prototype.hasOwnProperty(d)?a.hasOwnProperty(d):!0}function h(a,l){return d.init().then(function(){var g=new d.Types;l&&l.forEach(function(a){d.addIndexData(a,g)});var h=null;a==="Window"?h=d.addLibrary(g,"browser"):a==="Module"?h=d.addLibrary(g,
"node"):(h=new e,h.resolve(g),h=h.promise);return h})}return{createEnvironment:function(c){function d(b,a,c,f,e){var g=c[a],c=c.$$proto;if(g)return f||a==="$$fntype"?g:g.typeObj;else if(c){if(e){if(e[c.typeObj.name])return null}else e={};e[c.typeObj.name]=!0;return d(b,a,b.lookupQualifiedType(c.typeObj.name),f,e)}else return null}var e=c.buffer,q=c.uid,j=c.offset,b=c.indexer,s=c.globalObjName,f=c.indexData;j||(j=e.length+1);var v=[];if(c.comments)for(var o=0;o<c.comments.length;o++)v[o]=c.comments[o];
var r=function(b){switch(b){case "prototype":return"$$prototype";case "__proto__":return"$$proto";case "toString":case "hasOwnProperty":case "toLocaleString":case "valueOf":case "isProtoTypeOf":case "propertyIsEnumerable":return"$_$"+b;default:return b}},w=a.GEN_NAME+function(b){var a=0,c,d;if(b.length===0)return a;for(d=0;d<b.length;d++)c=b.charCodeAt(d),a=(a<<5)-a+c,a&=a;return a}(q)+"~";return h(s,f).then(function(c){return{_scopeStack:["Global"],_allTypes:c,_typeCount:0,_nameStack:[],amdModule:null,
commonjsModule:null,nodeJSModule:s==="Module",globalObjName:s,indexer:b,offset:j,contents:e,uid:q==="local"?null:q,comments:v,newName:function(){return w+this._typeCount++},isSyntheticName:function(b){return b.substr(0,a.GEN_NAME.length)===a.GEN_NAME},newScope:function(b){var c=this.scope(),d=this.newName();this._allTypes[d]={$$proto:new a.Definition(c,b,this.uid)};this._scopeStack.push(d);return d},newScopeObj:function(b){return a.createNameType(this.newScope(b))},pushScope:function(b){this._scopeStack.push(b)},
pushName:function(b){this._nameStack.push(b)},popName:function(){this._nameStack.pop()},getQualifiedName:function(){var b=this._nameStack.join(".");return b.length>0?b+".":b},newObject:function(b,c){this.newScope();b=b?b:this.newName();this._allTypes[b]={$$proto:new a.Definition("Object",c,this.uid)};var d=a.createNameType(b);this.addVariable("this",null,d,c);return d},newFleetingObject:function(b,c){var d=b?b:this.newName();this._allTypes[d]={$$proto:new a.Definition("Object",c,this.uid)};return a.createNameType(d)},
con:function(b,c){var d=b?b:this.newName();this._allTypes[d]={$$proto:new a.Definition("Object",c,this.uid)};return d},popScope:function(){return this._scopeStack.pop()},scope:function(b){if(typeof b==="string")return b;else if(b&&b.extras.inferredTypeObj)if(b=b.extras.inferredTypeObj,b.type==="NameExpression")return b.name;else if(b.type==="FunctionType"){if(b.params)for(var a=0;a<b.params.length;a++)if((b.params[a].name==="new"||b.params[a].name==="this")&&b.params[a].expression.name)return b.params[a].expression.name;
return"Function"}else if(b.type==="ArrayType")return"Array";else if(b.type==="TypeApplication")return b.expression.name;else{if(b.type==="UndefinedLiteral")return"Object"}else return this._scopeStack[this._scopeStack.length-1]},globalScope:function(){return this._allTypes[this._scopeStack[0]]},globalTypeName:function(){return this._scopeStack[0]},addVariable:function(b,c,d,f,e){if(b==="prototype")b="$$prototype";else if(b==="__proto__")b="$$proto";else if(this._allTypes.Object["$_$"+b])return;c=this._allTypes[this.scope(c)];
if(!c.$$isBuiltin&&(!k(c,b)||!a.leftTypeIsMoreGeneral(d,c[b].typeObj,this)))return c[b]=new a.Definition(d?d:a.OBJECT_TYPE,f,this.uid),c[b].docRange=e,c[b]},addOrSetGlobalVariable:function(b,a,c,d){return this._allTypes.Object["$_$"+b]?void 0:this.addOrSetVariable(b,this.globalTypeName(),a,c,d)},addOrSetVariable:function(b,c,d,f,e){if(b==="prototype")b="$$prototype";else if(b==="__proto__")b="$$proto";else if(this._allTypes.Object["$_$"+b])return;for(var c=this.scope(c),g=this._allTypes[c],s=!1,d=
d?d:this.newFleetingObject(),l;g;)if(k(g,b)){l=g[b];if(!g.$$isBuiltin&&g.hasOwnProperty(b)&&!a.leftTypeIsMoreGeneral(d,l.typeObj,this)){l.typeObj=d;if(e)l.docRange=e;if(b==="$$prototype"&&g.$$newtype)this._allTypes[g.$$newtype.typeObj.name].$$proto.typeObj=d}s=!0;break}else g=g.$$proto?this._allTypes[g.$$proto.typeObj.name||"Function"]:null;if(!s&&(c=this._allTypes[c],!c.$$isBuiltin))l=new a.Definition(d,f,this.uid),l.docRange=e,c[b]=l;return l},lookupQualifiedType:function(b,a){for(var c=b.split(".."),
f=this._allTypes[c[0]],e=1;e<c.length;e++)f=this._allTypes[d(this,r(c[e]),f,a).name];return f},lookupTypeObj:function(b,a,c){a=this.lookupQualifiedType(this.scope(a),c);return d(this,r(b),a,c)},removeVariable:function(b,a){var c=this._allTypes[this.scope(a)];!c.$$isBuiltin&&c[b]&&(!c[b]||c.hasOwnProperty(b))&&delete c[b]},mergeSummary:function(b,c){for(var d in b.types)if(b.types.hasOwnProperty(d)){var f=this._allTypes[d],e=b.types[d];if(!f||f.$$isBuiltin){var f=this._allTypes[d]={},g;for(g in e)f[g]||
(f[g]=a.Definition.revive(e[g]))}}d=this._allTypes[c];if(typeof b.provided!=="string")for(var l in b.provided)b.provided.hasOwnProperty(l)&&(d[l]=a.Definition.revive(b.provided[l]))},initFunctionType:function(b,c,d,f){var d=d.name,e=this.newFleetingObject(d+"~proto");this._allTypes[d].$$proto=new a.Definition("Function",null,this.uid);this._allTypes[d].$$fntype=b;this._allTypes[d].$$prototype=new a.Definition(e,null,this.uid);f||(f=d+"~new");this.newObject(f,c.range);this._allTypes[d].$$newtype=new a.Definition(f,
null,this.uid);this._allTypes[f].$$proto=new a.Definition(e,null,this.uid)},updateObjLitFunctionTypes:function(b){function a(b,c){if(b!==c)for(var d in c)if(c.hasOwnProperty(d)&&d.indexOf("$$")!==0)if(b.hasOwnProperty(d)){if(b[d].typeObj.type==="NameExpression"&&f.isSyntheticName(b[d].typeObj.name)&&c[d].typeObj.type==="NameExpression"&&f.isSyntheticName(c[d].typeObj.name)){var e=f._allTypes[b[d].typeObj.name],g=f._allTypes[c[d].typeObj.name];e&&g&&a(e,g)}}else b[d]=c[d]}var c=b.extras.inferredTypeObj.name;
if(c){var d={},f=this;a(d,this._allTypes[c]);b=b.properties;for(c=0;c<b.length;c++)if(b[c].hasOwnProperty("key")){var e=b[c].key.name;if(e&&b[c].value.type==="FunctionExpression")e=b[c].value.extras.inferredTypeObj.name,e=this._allTypes[this._allTypes[e].$$newtype.typeObj.name],a(d,e)}for(c=0;c<b.length;c++)if(b[c].hasOwnProperty("key")&&(e=b[c].key.name)&&b[c].value.type==="FunctionExpression"){var e=b[c].value.extras.inferredTypeObj.name,e=this._allTypes[this._allTypes[e].$$newtype.typeObj.name],
g;for(g in d)d.hasOwnProperty(g)&&!e.hasOwnProperty(g)&&(e[g]=d[g])}}},updateReturnType:function(b,a){if(!b)return a;var c=this._allTypes[b.name].$$fntype;if(c){var d={type:c.type,params:c.params,result:a};c["this"]&&(d["this"]=c["this"]);c["new"]&&(d["new"]=c["new"]);return this._allTypes[b.name].$$fntype=d}else return a},getNewType:function(b){return this.lookupTypeObj("$$newtype",b)},getFnType:function(b){var a=this.lookupTypeObj("$$fntype",b);if(!a)a=b.extras.inferredTypeObj;return a},findType:function(b){return this._allTypes[a.convertToSimpleTypeName(b)]},
getAllTypes:function(){return this._allTypes},storeTarget:function(b){if(!this.targetTypeName)b||(b=this.scope()),this.targetTypeName=b,this.targetFound=!0}}})}}});
define("javascript/contentAssist/esprimaVisitor",[],function(){return{visit:function(a,d,e,k){var h,c,l,g;if(e(a,d,!0)){g=[];for(c in a)if(c!=="range"&&c!=="errors"&&c!=="target"&&c!=="extras"&&c!=="comments")if(l=a[c],l instanceof Array)for(h=0;h<l.length;h++)l[h]&&l[h].hasOwnProperty("type")?g.push(l[h]):c==="properties"&&l[h].hasOwnProperty("key")&&l[h].hasOwnProperty("value")&&(g.push(l[h].key),g.push(l[h].value));else l&&l.hasOwnProperty("type")&&g.push(l);if(g.length>0){g.sort(function(a,c){return a.range&&
c.range?a.range[0]-c.range[0]:a.range?1:c.range?-1:0});for(h=0;h<g.length;h++)this.visit(g[h],d,e,k)}k&&k(a,d,!1)}}}});
define("javascript/contentAssist/typeInference",["javascript/contentAssist/esprimaVisitor","javascript/contentAssist/typeUtils","javascript/contentAssist/proposalUtils"],function(a,d,e){function k(b){return b?b.type==="Identifier"?b:b.type==="MemberExpression"?b.computed?b.property.type==="Literal"&&typeof b.property.value==="string"?b.property:b:k(b.property):b.type==="ArrayExpression"?b:null:null}function h(b){if(b)if(b.type==="Identifier")return b.name;else if(b.type==="MemberExpression"){var a=
h(b.object),b=h(b.property);return a.length>0&&b.length>0?a+"."+b:a+b}else return b.type==="CallExpression"?h(b.callee):"";else return""}function c(b,a){for(var c;a.length>0&&a[0].range[0]<b.range[0];)c=a.shift();return c||{value:null}}function l(b,g){var f=b.type,j,o,r,w,z,p;if(!b.extras)b.extras={};switch(f){case "Program":a:{if((f=b.body)&&f.length>=1)for(p=0;p<f.length;p++)if(f[p]&&f[p].type==="ExpressionStatement"&&f[p].expression&&f[p].expression.type==="CallExpression"&&f[p].expression.callee.name===
"define"&&(r=f[p].expression,r.arguments&&r.arguments.length===1&&r.arguments[0].type==="FunctionExpression"&&r.arguments[0].params.length===3&&(r=r.arguments[0].params,r[0].name==="require"&&r[1].name==="exports"&&r[2].name==="module"))){f=f[p].expression;break a}f=null}g.commonjsModule=f;if(!g.commonjsModule)f=b.body,g.amdModule=f&&f.length>=1&&f[0]&&f[0].type==="ExpressionStatement"&&f[0].expression&&f[0].expression.type==="CallExpression"&&f[0].expression.callee.name==="define"?f[0].expression:
null;break;case "BlockStatement":b.extras.inferredTypeObj=g.newScopeObj();if(b.extras.stop)return q(b,g),delete b.extras.stop,!1;break;case "ArrayExpression":b.extras.inferredTypeObj=d.ARRAY_TYPE;break;case "ObjectExpression":b.extras.fname&&g.pushName(b.extras.fname);w=g.newObject(null,b.range);b.extras.inferredTypeObj=w;for(o=0;o<b.properties.length;o++)if(j=b.properties[o],j.key&&j.key.name){f=c(j.key,g.comments);z=d.parseJSDocComment(f);p=z.type&&d.convertJsDocType(z.type,g);if(!j.key.extras)j.key.extras=
{};p?j.key.extras.inferredType=j.key.extras.jsdocType=r=p:r=d.OBJECT_TYPE;g.addVariable(j.key.name,b,r,j.key.range,f.range);j.key.extras.associatedComment=f;j.key.extras.isLHS=j.key.extras.isDecl=!0;if(j.value.type==="FunctionExpression"||j.value.type==="ObjectExpression"){if(!j.value.extras)j.value.extras={};j.value.extras.fname=j.key.name;j.value.extras.cname=g.getQualifiedName()+j.key.name;if(j.value.type==="FunctionExpression")j.value.extras.jsdocResult=z}}break;case "FunctionDeclaration":case "FunctionExpression":if(b.id)j=
b.id.name,p=b.id.range;else if(b.extras.fname)j=b.extras.fname,p=b.range;r=[];if(b.params)for(o=0;o<b.params.length;o++)r[o]=b.params[o].name;b.extras.jsdocResult?(z=b.extras.jsdocResult,f={range:null}):(f=b.extras.associatedComment||c(b,g.comments),z=d.parseJSDocComment(f));var i;if(j&&b.body&&d.isUpperCaseChar(j)){if(b.extras.cname)j=b.extras.cname;w=d.createNameType(j);i=!0}else{if(z.rturn){var B=d.convertJsDocType(z.rturn,g);w=b.extras.jsdocReturn=B;b.extras.inferredTypeObj=B}else w=d.UNDEFINED_TYPE;
i=!1}var Q=Array(r.length);if(b.extras.paramTypeObj&&b.extras.paramTypeObj.type==="FunctionType"){var B=b.extras.paramTypeObj.params,K=Math.min(r.length||0,B.length||0);for(o=0;o<K;o++)Q[o]=B[o]}else if(b.extras.stashedArguments){K=Math.min(r.length||0,b.extras.stashedArguments.length||0);for(o=0;o<K;o++)Q[o]=b.extras.stashedArguments[o].extras.inferredTypeObj}if(!b.body.extras)b.body.extras={};b.body.extras.isConstructor=i;B=[];if(r.length>0){K=[];o=b.params;var N;if(o.length>0){if(!b.extras)b.extras=
{};if(g.indexer&&b.extras.amdDefn&&(N=b.extras.amdDefn.arguments,N.length>1&&N[N.length-1]===b)){var U=null;if(N.length===3&&N[0].type==="Literal"&&N[1].type==="ArrayExpression")U=N[1].elements;else if(N.length===2&&N[0].type==="ArrayExpression")U=N[0].elements;if(U)for(N=0;N<o.length;N++)if(N<U.length&&U[N].type==="Literal"){var R=g.indexer.retrieveSummary(U[N].value,g);if(R){var O,la;typeof R.provided==="string"?la=O=R.provided:(la=O=g.newScope(),g.popScope());g.mergeSummary(R,la);K.push(O)}else K.push(g.newFleetingObject())}else K.push(d.OBJECT_TYPE)}}if(K.length===
0)for(N=0;N<o.length;N++)K.push(g.newFleetingObject());for(o=0;o<r.length;o++)U=z.params[r[o]],N=null,N=U?d.convertJsDocType(U,g):K[o],Q[o]&&d.leftTypeIsMoreGeneral(N,Q[o],g)&&(N=Q[o].type==="ParameterType"?Q[o].expression:Q[o]),B.push(d.createParamType(r[o],N))}z=d.createFunctionType(B,w,i);Q=g.newFleetingObject();j&&!e.isBefore(g.offset,b.range)&&g.addVariable(j,b.extras.target,Q,p,f.range);g.initFunctionType(z,b,Q,i?w.name:void 0);i&&g.addOrSetGlobalVariable(j,Q,p,f.range);b.extras.inferredTypeObj=
Q;g.addVariable("arguments",b.extras.target,d.createNameType("Arguments"),b.range);if(z=b.extras.appliesTo)if(z=z.extras.target)z=g.scope(z),d.isPrototypeName(z)&&(z=d.extractReturnType(z)),g.addVariable("this",b.extras.target,d.createNameType(z),p,f.range);for(o=0;o<r.length;o++)g.addVariable(r[o],b.extras.target,B[o].expression,b.params[o].range);break;case "VariableDeclarator":if(b.id.name){if(!b.id.extras)b.id.extras={};b.id.extras.isLHS=b.id.extras.isDecl=!0;if(b.init&&!b.init.extras)b.init.extras=
{};if(b.init&&b.init.type==="FunctionExpression")b.init.extras.fname=b.id.name,b.init.extras.cname=g.getQualifiedName()+b.id.name,b.init.extras.fnameRange=b.id.range;else if(f=c(b,g.comments),z=d.parseJSDocComment(f),p=z.type&&d.convertJsDocType(z.type,g),b.extras.docRange=f.range,p)b.extras.inferredTypeObj=p,b.extras.jsdocType=p,g.addVariable(b.id.name,b.extras.target,p,b.id.range,f.range)}g.pushName(b.id.name);break;case "AssignmentExpression":r=k(b.left);j=g.getQualifiedName()+h(b.left);if(r&&
(r.type==="Identifier"||r.type==="Literal")){if(!r.extras)r.extras={};if(b.right.type==="FunctionExpression"){if(!b.right.extras)b.right.extras={};b.right.extras.appliesTo=r;b.right.extras.fname=r.name;b.right.extras.cname=j;b.right.extras.fnameRange=r.range;if(!b.left.extras)b.left.extras={}}f=c(b,g.comments);z=d.parseJSDocComment(f);p=z.type&&d.convertJsDocType(z.type,g);b.extras.docRange=f.range;if(p)b.extras.inferredTypeObj=p,b.extras.jsdocType=p,g.addVariable(r.name,b.extras.target,p,r.range,
f.range)}g.pushName(j);break;case "CatchClause":b.extras.inferredTypeObj=g.newScope();if(b.param){if(!b.param.extras)b.param.extras={};f=d.createNameType("Error");b.param.extras.inferredTypeObj=f;g.addVariable(b.param.name,b.extras.target,f,b.param.range)}break;case "MemberExpression":if(b.property&&(!b.computed||b.computed&&b.property.type==="Literal"&&typeof b.property.value==="string")){if(!b.property.extras)b.property.extras={};b.property.extras.target=b.object}break;case "CallExpression":if(b.callee.name===
"define"||b.callee.name==="require"){if(f=b.arguments,f.length>1&&f[f.length-1].type==="FunctionExpression"&&f[f.length-2].type==="ArrayExpression"){if(!f[f.length-1].extras)f[f.length-1].extras={};f[f.length-1].extras.amdDefn=b}}else if((r=k(b.callee))&&r.type==="Identifier")r.extras=r.extras||{},r.extras.callArgs=b.arguments;else if(b.callee.type==="FunctionExpression"&&b.arguments){for(f=0;f<b.arguments.length;f++)a.visit(b.arguments[f],g,l,q);if(!b.callee.extras)b.callee.extras={};b.callee.extras.stashedArguments=
b.arguments;delete b.arguments}}if(b===g.defer)b.extras.associatedComment=c(b,g.comments),b.extras.inferredTypeObj=b.extras.inferredTypeObj||d.OBJECT_TYPE,b.extras.scope=g.scope(b.extras.target),b.body.extras.stop=!0;return!0}function g(b){if(!b)return null;var a,c;switch(b.type){case "BlockStatement":return b.body&&b.body.length>0?(a=b.body[b.body.length-1],a.type==="ReturnStatement"?a:g(a)):null;case "WhileStatement":case "DoWhileStatement":case "ForStatement":case "ForInStatement":case "CatchClause":return g(b.body);
case "IfStatement":return(a=g(b.alternate))||(a=g(b.consequent)),a;case "TryStatement":a=g(b.finalizer);var d=b.handlers;if(!a&&d)for(c=d.length-1;c>=0;c--)if(a=g(d[c]))break;a||(a=g(b.block));return a;case "SwitchStatement":if(b=b.cases)for(c=b.length-1;c>=0;c--)if(a=g(b[c]))break;return a;case "SwitchCase":return b.consequent&&b.consequent.length>0?(a=b.consequent[b.consequent.length-1],a.type==="ReturnStatement"?a:g(a)):null;case "ReturnStatement":return b;default:return null}}function q(b,c){var f,
h,o,r;switch(b.type){case "Program":if(c.defer)c.comments=c.deferredComments,f=c.defer,c.defer=null,c.targetTypeName=null,c.pushScope(f.extras.scope),a.visit(f.body,c,l,q),c.popScope();c.storeTarget();throw c.targetTypeName;case "BlockStatement":case "CatchClause":e.inRange(c.offset,b.range)&&c.storeTarget();c.popScope();break;case "MemberExpression":e.afterDot(c.offset,b,c.contents)&&c.storeTarget(c.scope(b.object));b.extras.inferredTypeObj=d.isArrayType(b.object.extras.inferredTypeObj)&&b.computed?
d.extractArrayParameterType(b.object.extras.inferredTypeObj):b.computed&&b.property&&b.property.type!=="Literal"?d.OBJECT_TYPE:b.property?b.property.extras.inferredTypeObj:b.object.extras.inferredTypeObj;break;case "CallExpression":a:{if((c.indexer||c.nodeJSModule)&&b.type==="CallExpression"&&b.callee.type==="Identifier"&&b.callee.name==="require"&&b.arguments.length===1)if(f=b.arguments[0],f.type==="Literal"&&typeof f.value==="string"&&c.indexer&&(f=c.indexer.retrieveSummary(f.value,c))){typeof f.provided===
"string"?h=o=f.provided:(h=o=c.newScope(),c.popScope());c.mergeSummary(f,h);f=d.ensureTypeObject(o);break a}f=void 0}f||(f=d.extractReturnType(c.getFnType(b.callee)));b.extras.inferredTypeObj=f;if(b.callee.extras.stashedArguments){if(b.arguments)throw"thought we deleted node.arguments";b.arguments=b.callee.extras.stashedArguments;delete b.callee.extras.stashedArguments}break;case "NewExpression":b.extras.inferredTypeObj=c.getNewType(b.callee);break;case "ObjectExpression":r=b.properties;for(o=0;o<
r.length;o++)if(r[o].hasOwnProperty("key")&&(f=r[o].key.name)){var w=null;if(f===r[o].value.name&&(h=c.lookupTypeObj(r[o].value.name,null,!0))&&h.range&&d.isFunctionOrConstructor(h.typeObj))w=h.range;if(!w)w=r[o].key.range;h=r[o].key.extras.jsdocType||r[o].value.extras.inferredTypeObj;c.addVariable(f,b,h,w,r[o].key.extras.associatedComment.range);e.inRange(c.offset-1,r[o].key.range)&&c.storeTarget(c.scope(b))}c.updateObjLitFunctionTypes(b);b.extras.fname&&c.popName();c.popScope();break;case "LogicalExpression":case "BinaryExpression":switch(b.operator){case "+":b.extras.inferredTypeObj=
b.left.extras.inferredTypeObj.name==="String"||b.right.extras.inferredTypeObj.name==="String"?d.STRING_TYPE:d.NUMBER_TYPE;break;case "-":case "/":case "*":case "%":case "&":case "|":case "^":case "<<":case ">>":case ">>>":b.extras.inferredTypeObj=d.NUMBER_TYPE;break;case "&&":case "||":b.extras.inferredTypeObj=b.left.extras.inferredTypeObj;break;case "!==":case "!=":case "===":case "==":case "<":case "<=":case ">":case ">=":b.extras.inferredTypeObj=d.BOOLEAN_TYPE;break;default:b.extras.inferredTypeObj=
d.OBJECT_TYPE}break;case "UpdateExpression":case "UnaryExpression":b.extras.inferredTypeObj=b.operator==="!"?d.BOOLEAN_TYPE:d.NUMBER_TYPE;break;case "FunctionDeclaration":case "FunctionExpression":c.popScope();if(b.body)if(b.body.extras.isConstructor)f=b.id?b.id.range:b.extras.fnameRange,c.addOrSetVariable(d.extractReturnType(b.extras.inferredTypeObj),b.extras.target,b.extras.inferredTypeObj,f);else{b.extras.jsdocReturn||(o=g(b.body),c.updateReturnType(b.extras.inferredTypeObj,o&&o.extras&&o.extras.inferredTypeObj?
o.extras.inferredTypeObj:d.UNDEFINED_TYPE));if(b.id)h=b.id.name,f=b.id.range;else if(b.extras.appliesTo)h=b.extras.fname,f=b.extras.fnameRange;h&&c.addOrSetVariable(h,b.extras.target,b.extras.inferredTypeObj,f)}break;case "VariableDeclarator":h=b.init?b.init.extras.inferredTypeObj:c.newFleetingObject();b.id.extras.inferredTypeObj=h;if(!b.extras.jsdocType)b.extras.inferredTypeObj=h,c.addVariable(b.id.name,b.extras.target,h,b.id.range,b.extras.docRange);e.inRange(c.offset-1,b.id.range)&&c.storeTarget(c.scope(b.id.extras.target));
c.popName();break;case "Property":b.extras.inferredTypeObj=b.key.extras.jsdocType?b.key.extras.jsdocType:b.key.extras.inferredTypeObj=b.value.extras.inferredTypeObj;break;case "AssignmentExpression":h=b.extras.jsdocType?b.extras.jsdocType:b.operator==="="?b.right.extras.inferredTypeObj:b.operator==="+="&&b.left.extras.inferredTypeObj.name==="String"?d.STRING_TYPE:d.NUMBER_TYPE;b.extras.inferredTypeObj=h;if((o=k(b.left))&&(o.type==="Identifier"||o.type==="Literal"))f=o.name?o.name:o.value,o.extras.inferredTypeObj=
h,c.addOrSetVariable(f,o.extras.target,h,o.range,b.extras.docRange),e.inRange(c.offset-1,o.range)&&c.storeTarget(c.scope(o.extras.target));else if(b.left.computed&&(o=k(b.left.object))&&!(o.type==="Identifier"&&o.name==="prototype"))f=d.parameterizeArray(h),b.left.extras.inferredTypeObj=h,b.left.object.extras.inferredTypeObj=f,c.addOrSetVariable(o.name,o.extras.target,f,o.range,b.extras.docRange);c.popName();break;case "Identifier":f=b.name;if((h=c.lookupTypeObj(f,b.extras.target))&&!b.extras.isDecl){b.extras.inferredTypeObj=
h;e.inRange(c.offset,b.range,!0)&&c.storeTarget(c.scope(b.extras.target));if(b.extras.callArgs&&h.type==="FunctionType"){r=h.params;var w=b.extras.callArgs,z=Math.min(w.length||0,r.length||0);for(o=0;o<z;o++)w[o].extras=w[o].extras||{},w[o].extras.paramTypeObj=r[o].type==="ParameterType"?r[o].expression:r[o]}if(b.extras.paramTypeObj&&d.leftTypeIsMoreGeneral(h,b.extras.paramTypeObj,c))b.extras.inferredTypeObj=h=b.extras.paramTypeObj,c.addOrSetVariable(f,b.extras.target,h)}else if(!b.extras.isLHS)if(!e.inRange(c.offset,
b.range,!0)&&j[f]!==!0)if(b.extras.target){if(f=c.addVariable(f,b.extras.target,c.newFleetingObject(),b.range))b.extras.inferredTypeObj=f.typeObj}else b.extras.inferredTypeObj=c.addOrSetGlobalVariable(f,null,b.range).typeObj;else c.storeTarget(c.scope(b.extras.target));break;case "ThisExpression":b.extras.inferredTypeObj=c.lookupTypeObj("this");e.inRange(c.offset-1,b.range)&&c.storeTarget(c.scope());break;case "ReturnStatement":if(b.argument)b.extras.inferredTypeObj=b.argument.extras.inferredTypeObj;
break;case "Literal":b.extras.target&&typeof b.value==="string"?(f=b.value,h=c.lookupTypeObj(f,b.extras.target),b.extras.inferredTypeObj=h):b.extras.target&&typeof b.value==="number"?b.extras.inferredTypeObj=d.NUMBER_TYPE:(f=typeof b.value,b.extras.inferredTypeObj=d.createNameType(f[0].toUpperCase()+f.substring(1,f.length)));break;case "ConditionalExpression":if(f=b.consequent?b.consequent:b.alternate)b.extras.inferredTypeObj=f.extras.inferredTypeObj;break;case "ArrayExpression":if(b.elements)for(o=
0;o<b.elements.length;o++)if(b.elements[o])b.extras.inferredTypeObj=d.parameterizeArray(b.elements[o].extras.inferredTypeObj)}if(!b.extras.inferredTypeObj)b.extras.inferredTypeObj=d.OBJECT_TYPE}var j={"break":!0,"case":!0,"catch":!0,"continue":!0,"debugger":!0,"default":!0,"delete":!0,"do":!0,"else":!0,"finally":!0,"for":!0,"function":!0,"if":!0,"in":!0,"instanceof":!0,"new":!0,"return":!0,"switch":!0,"this":!0,"throw":!0,"try":!0,"typeof":!0,"var":!0,"void":!0,"while":!0,"with":!0};return{inferTypes:function(b,
c,d){var e,g;if(d&&Array.isArray(d.global))for(e=0;e<d.global.length;e++)g=d.global[e],c.lookupTypeObj(g)||c.addOrSetVariable(g);if(g=c.comments)for(e=0;e<g.length;e++)if(d=g[e].range,g[e].type==="Block"&&g[e].value.substring(0,6)==="global"){e=g[e].value.split(/\s+/);for(var h=1;h<e.length;h++)e[h].length>0&&(g=e[h].indexOf(":"),g=g>=0?e[h].substring(0,g).trim():e[h].trim(),c.lookupTypeObj(g)||c.addOrSetVariable(g,null,null,d));break}if(c.indexer){var d=c.indexer.retrieveGlobalSummaries(),j;for(j in d)d.hasOwnProperty(j)&&
c.mergeSummary(d[j],c.globalTypeName())}j=[];for(d=0;d<c.comments.length;d++)c.comments[d].value.charAt(0)==="*"&&j.push(c.comments[d]);c.comments=j;try{a.visit(b,c,l,q)}catch(k){if(typeof k!=="string")throw k;return k}throw Error("The visit function should always end with a throwable");}}});
(function(a,d){typeof define==="function"&&define.amd?define("estraverse",["exports"],d):typeof exports!=="undefined"?d(exports):d(a.estraverse={})})(this,function(a){function d(b){var a={},c,e;for(c in b)b.hasOwnProperty(c)&&(e=b[c],a[c]=typeof e==="object"&&e!==null?d(e):e);return a}function e(b,a){var c,d,e,i;d=b.length;for(e=0;d;)c=d>>>1,i=e+c,a(b[i])?d=c:(e=i+1,d-=c+1);return e}function k(b,a){this.parent=b;this.key=a}function h(b,a,c,d){this.node=b;this.path=a;this.wrap=c;this.ref=d}function c(){}
function l(b,a){return(new c).traverse(b,a)}function g(b,a){var c;c=e(a,function(a){return a.range[0]>b.range[0]});b.extendedRange=[b.range[0],b.range[1]];c!==a.length&&(b.extendedRange[1]=a[c].range[0]);c-=1;c>=0&&(b.extendedRange[0]=a[c].range[1]);return b}var q,j,b,s,f,v;q={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",
BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",
FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",
SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"};(j=Array.isArray)||(j=function(b){return Object.prototype.toString.call(b)==="[object Array]"});s={AssignmentExpression:["left",
"right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","defaults","rest","body"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],
DoWhileStatement:["body","test"],EmptyStatement:[],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],FunctionDeclaration:["id","params","defaults","rest","body"],FunctionExpression:["id","params","defaults","rest","body"],Identifier:[],IfStatement:["test","consequent","alternate"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],
NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id",
"init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]};f={};v={};b={Break:f,Skip:v};k.prototype.replace=function(b){this.parent[this.key]=b};c.prototype.path=function(){function b(a,c){if(j(c))for(d=0,e=c.length;d<e;++d)a.push(c[d]);else a.push(c)}var a,c,d,e,i,g;if(!this.__current.path)return null;i=[];for(a=2,c=this.__leavelist.length;a<c;++a)g=this.__leavelist[a],b(i,g.path);b(i,this.__current.path);return i};c.prototype.parents=function(){var b,a,
c;c=[];for(b=1,a=this.__leavelist.length;b<a;++b)c.push(this.__leavelist[b].node);return c};c.prototype.current=function(){return this.__current.node};c.prototype.__execute=function(b,a){var c,d;d=void 0;c=this.__current;this.__current=a;this.__state=null;b&&(d=b.call(this,a.node,this.__leavelist[this.__leavelist.length-1].node));this.__current=c;return d};c.prototype.notify=function(b){this.__state=b};c.prototype.skip=function(){this.notify(v)};c.prototype["break"]=function(){this.notify(f)};c.prototype.__initialize=
function(b,a){this.visitor=a;this.root=b;this.__worklist=[];this.__leavelist=[];this.__state=this.__current=null};c.prototype.traverse=function(b,a){var c,d,e,i,g,l,k,N,U,R,O;this.__initialize(b,a);O={};c=this.__worklist;d=this.__leavelist;c.push(new h(b,null,null,null));for(d.push(new h(null,null,null,null));c.length;)if(e=c.pop(),e===O){if(e=d.pop(),i=this.__execute(a.leave,e),this.__state===f||i===f)break}else if(e.node){i=this.__execute(a.enter,e);if(this.__state===f||i===f)break;c.push(O);d.push(e);
if(!(this.__state===v||i===v)){i=e.node;g=e.wrap||i.type;U=s[g];for(k=U.length;(k-=1)>=0;)if(l=U[k],R=i[l])if(j(R))for(N=R.length;(N-=1)>=0;)R[N]&&(e=(g===q.ObjectExpression||g===q.ObjectPattern)&&"properties"===U[k]?new h(R[N],[l,N],"Property",null):new h(R[N],[l,N],null,null),c.push(e));else c.push(new h(R,l,null,null))}}};c.prototype.replace=function(b,a){var c,d,e,i,g,l,K,N,U,R,O,la;this.__initialize(b,a);R={};c=this.__worklist;d=this.__leavelist;O={root:b};g=new h(b,null,null,new k(O,"root"));
c.push(g);for(d.push(g);c.length;)if(g=c.pop(),g===R){if(g=d.pop(),i=this.__execute(a.leave,g),i!==void 0&&i!==f&&i!==v&&g.ref.replace(i),this.__state===f||i===f)break}else{i=this.__execute(a.enter,g);if(i!==void 0&&i!==f&&i!==v)g.ref.replace(i),g.node=i;if(this.__state===f||i===f)break;if(e=g.node)if(c.push(R),d.push(g),!(this.__state===v||i===v)){i=g.wrap||e.type;N=s[i];for(l=N.length;(l-=1)>=0;)if(la=N[l],U=e[la])if(j(U))for(K=U.length;(K-=1)>=0;)U[K]&&(g=i===q.ObjectExpression&&"properties"===
N[l]?new h(U[K],[la,K],"Property",new k(U,K)):new h(U[K],[la,K],null,new k(U,K)),c.push(g));else c.push(new h(U,la,null,new k(e,la)))}}return O.root};a.version="1.3.3-dev";a.Syntax=q;a.traverse=l;a.replace=function(b,a){return(new c).replace(b,a)};a.attachComments=function(a,c,e){var f=[],h,i,j;if(!a.range)throw Error("attachComments needs range information");if(!e.length){if(c.length){for(i=0,h=c.length;i<h;i+=1)e=d(c[i]),e.extendedRange=[0,a.range[0]],f.push(e);a.leadingComments=f}return a}for(i=
0,h=c.length;i<h;i+=1)f.push(g(d(c[i]),e));j=0;l(a,{enter:function(a){for(var c;j<f.length;){c=f[j];if(c.extendedRange[1]>a.range[0])break;if(c.extendedRange[1]===a.range[0]){if(!a.leadingComments)a.leadingComments=[];a.leadingComments.push(c);f.splice(j,1)}else j+=1}if(j===f.length)return b.Break;if(f[j].extendedRange[0]>a.range[1])return b.Skip}});j=0;l(a,{leave:function(a){for(var c;j<f.length;){c=f[j];if(a.range[1]<c.extendedRange[0])break;if(a.range[1]===c.extendedRange[0]){if(!a.trailingComments)a.trailingComments=
[];a.trailingComments.push(c);f.splice(j,1)}else j+=1}if(j===f.length)return b.Break;if(f[j].extendedRange[0]>a.range[1])return b.Skip}});return a};a.VisitorKeys=s;a.VisitorOption=b;a.Controller=c});
define("javascript/contentAssist/contentAssist","javascript/contentAssist/typeEnvironment,javascript/contentAssist/typeInference,javascript/contentAssist/typeUtils,javascript/contentAssist/proposalUtils,orion/Deferred,orion/objects,esprima,estraverse".split(","),function(a,d,e,k,h,c,l,g){function q(b,a,c){var a=a.params||[],d=[];b+="(";for(var e=a.length,g=0;g<e;g++)if(!(a[g].name==="new"||a[g].name==="this")){g>0&&(b+=", ");var f=a[g],h,l;if(f.type==="OptionalType")f=f.expression,h=!0;if(f.type===
"RestType")f=f.expression,l=!0;f=f.name||"arg"+g;l&&(f="..."+f);h&&(f="["+f+"]");d.push({offset:c+b.length+1,length:f.length});b+=f}b+=")";return{completion:b,positions:d.length===0?null:d}}function j(b,a,c,d){var e=[];g.traverse(b,{skipped:!1,enter:function(b){this.skipped=!1;if(!b.extras)b.extras={};if(b.range&&k.inRange(a-1,b.range)||b.type===g.Syntax.Program){if(b.type===g.Syntax.Identifier)return g.VisitorOption.Break;e.push(b);if((b.type===g.Syntax.FunctionDeclaration||b.type===g.Syntax.FunctionExpression)&&
b.nody&&k.isBefore(a,b.body.range))return g.VisitorOption.Break;if(b.type===g.Syntax.MemberExpression&&!b.property&&k.afterDot(a,b,d))return g.VisitorOption.Break}else return this.skipped=!0,g.VisitorOption.Skip},leave:function(b){if(!this.skipped){if(b.type===g.Syntax.Program||b.type===g.Syntax.BlockStatement&&k.inRange(a,b.range))return g.VisitorOption.Break;e.pop()}}});var f;if(e&&e.length){b=e.pop();for(c=e.length-1;c>=0;c--)if((e[c].type===g.Syntax.FunctionDeclaration||e[c].type===g.Syntax.FunctionExpression)&&
(!e[c].id||!k.inRange(a,e[c].id.range,!0))){f=e[c];break}switch(b.type){case g.Syntax.MemberExpression:if(b.property&&k.inRange(a-1,b.property.range))return{kind:"member",toDefer:f};else if(k.inRange(a-1,b.range)&&k.afterDot(a,b,d))return{kind:"member",toDefer:f};break;case g.Syntax.VariableDeclarator:if(!b.init||k.isBefore(a,b.init.range))return null;break;case g.Syntax.FunctionDeclaration:case g.Syntax.FunctionExpression:if(k.isBefore(a,b.body.range))return!0}}return{kind:"top",toDefer:f}}function b(b,
a){switch(b.type){case "FunctionType":if(b.result&&b.result.type==="UndefinedLiteral")return""}return" : "+e.createReadableType(b,a)}function s(a,c,d,e,g,f,h,l){var j,w,p,a=c.lookupQualifiedType(a),o=a.$$proto;h||(h=100);o&&(w=!1,l?l[o.typeObj.name]&&(w=!0):l={},w||(l[o.typeObj.name]=!0,s(o.typeObj.name,c,d,e,g,f,h-10,l)));f["---dummy"+h]={proposal:"",name:"",description:"---------------------------------",relevance:h-1,style:"hr",unselectable:!0};var z=Object.getPrototypeOf(a),v=!Object.getPrototypeOf(z);
for(j in a)if((a.hasOwnProperty(j)||!v&&z.hasOwnProperty(j))&&!(j.charAt(0)==="$"&&j.charAt(1)==="$"))if(w=!o&&j.indexOf("$_$")===0?j.substring(3):j,!(w==="this"&&d==="member")&&a[j].typeObj&&k.looselyMatches(e,w)){l=a[j].typeObj;if(c._allTypes[l.name]&&c._allTypes[l.name].$$fntype)l=c._allTypes[l.name].$$fntype;l.type==="FunctionType"?(p=q(w,l,g-1),f["$"+w]={proposal:p.completion,name:p.completion,description:b(l,c),positions:p.positions,escapePosition:g+p.completion.length,relevance:h+5,style:"emphasis",
overwrite:!0}):f["$"+w]={proposal:w,relevance:h,name:w,description:b(l,c),style:"emphasis",overwrite:!0}}}function f(a,c,d,e){function g(h){for(var l in h)if(h.hasOwnProperty(l)&&l.indexOf(c)===0&&!e["$"+l]&&l!=="$$proto"&&l!=="$$isBuiltin"&&l!=="$$fntype"&&l!=="$$newtype"&&l!=="$$prototype"){var j=h[l].typeObj;if(j.type==="FunctionType"){var k=q(l,j,d-1);e[l]={proposal:k.completion.substring(c.length),name:l,description:b(j,a),positions:k.positions,escapePosition:d+k.completion.length,relevance:-99,
style:"noemphasis"}}else e[l]={proposal:l.substring(c.length),name:l,description:b(j,a),relevance:-100,style:"noemphasis"};f=!0}}var f=!1,h=a.getAllTypes(),l;for(l in h)h[l].$$proto&&g(h[l]);f&&(e["---dummy"]={proposal:"",name:"",description:"Non-inferred proposals",relevance:-98,style:"noemphasis",unselectable:!0})}function v(b,a){for(var c=0;c<b.length;c++){var d=b[c];if(d.type==="Block"&&(d.value.substring(0,6)==="jslint"||d.value.substring(0,6)==="jshint"))return d.value.match(w)||d.value.match(p)?
"Window":d.value.match(z)?"Module":"Global"}if(a&&a.options)if(a.options.browser===!0)return"Window";else if(a.options.node===!0)return"Module";return"Global"}function o(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(b[c]);a.sort(function(b,a){if(b.relevance>a.relevance)return-1;else if(a.relevance>b.relevance)return 1;var c=b.name.toLowerCase(),d=a.name.toLowerCase();if(c<d)return-1;else if(d<c)return 1;return 0});b=[];for(c=a.length-1;c>=0&&a[c].description.indexOf("---")===0;)b[c]=!0,c--;
for(c=0;c<a.length&&a[c].description.indexOf("---")===0;)b[c]=!0,c++;for(c+=1;c<a.length;)a[c].description.indexOf("---")===0&&a[c-1].description.indexOf("---")===0&&(b[c]=!0),c++;var d=[];for(c=0;c<a.length;c++)b[c]||d.push(a[c]);return d}function r(b,a,c){this.astManager=b;this.indexer=a;this.lintOptions=c}var w=/browser\s*:\s*true/,z=/node\s*:\s*true/,p=/amd\s*:\s*true/;c.mixin(r.prototype,{computeContentAssist:function(b,a){var c=this;return h.all([this.astManager.getAST(b),b.getText(),this._createIndexData(b,
a)]).then(function(b){return c._computeProposalsFromAST(b[0],b[1],a)})},_createIndexData:function(b,a){if(!this.indexer)return(new h).resolve();if(!this.indexDataPromise){var c=this,d=a.typeDefs||{},e=[];Object.keys(d).forEach(function(a){d[a].type==="tern"&&e.push(b.getTypeDef(a))});this.indexDataPromise=h.all(e).then(function(b){c.indexer.setIndexData(b);return c.indexData})}return this.indexDataPromise},_computeProposalsFromAST:function(b,c,e){function g(){var b=new h;b.resolve([]);return b.promise}
if(e.selection&&e.selection.start!==e.selection.end)return g();if(!b)return g();var l=e.offset,q=j(b,l,e.prefix,c);if(q){var w=this;return a.createEnvironment({buffer:c,uid:"local",offset:l,indexer:w.indexer,globalObjName:v(b.comments,w.lintOptions),comments:b.comments}).then(function(a){a.defer=q.toDefer;if(a.defer){var c;c=a.comments;var g=a.defer.range,h=0,j=0,p,z,K;for(p=0;p<c.length;p++)if(z=c[p].range[0],K=c[p].range[1],!k.isBefore(z,g)||!k.isBefore(K,g))break;if(p<c.length){for(h=p;p<c.length;p++)if(z=
c[p].range[0],K=c[p].range[1],!k.inRange(z,g,!0)||!k.inRange(K,g,!0))break;j=p}c=c.splice(h,j-h);a.deferredComments=c}c=d.inferTypes(b,a,w.lintOptions);g={};s(c,a,q.kind,e.prefix,l-e.prefix.length,g);e.includeNonInferred&&f(a,e.prefix,l-e.prefix.length,g);return o(g)})}else return g()}});return{JSContentAssist:r}});
define("javascript/contentAssist/indexer",["javascript/contentAssist/indexFiles/nodeIndex","javascript/contentAssist/typesFromIndexFile","javascript/contentAssist/typeUtils","orion/objects"],function(a,d,e,k){function h(){this.catalog=null}k.mixin(h.prototype,{setIndexData:function(a){var d=Object.create(null);a.forEach(function(a){var c;if(!(c=a["!name"]))throw Error("Missing !name in typeDef: "+a);d[c]=a});this.catalog=d},retrieveGlobalSummaries:function(){},retrieveSummary:function(c,h){if(!h.amdModule&&
(h.nodeJSModule||h.commonjsModule||h.globalObjName!=="Window")){var g=d.getGlobalsAndTypes("node",a),k;c.indexOf(".")!==-1||c.indexOf("/")!==-1?k=null:(k=e.convertToSimpleTypeName(e.ensureTypeObject(c)),k=g.types[k]?!0:!1);if(k)return{provided:c,types:g.types}}return Object.prototype.hasOwnProperty.call(this.catalog,c)?(g=d.getGlobalsAndTypes(c,this.catalog[c]),{provided:c,types:g.types}):null}});return h});
(function(a,d){function e(a,d){var c,e,g,q;g=a.split(".");for(c=0,e=g.length;c<e;++c)q=g[c],d=d.hasOwnProperty(q)?d[q]:d[q]={};return d}typeof define==="function"&&define.amd?define("escope",["exports","estraverse"],function(e,h){a(e,d,h)}):typeof exports!=="undefined"?a(exports,d,require("estraverse")):a(e("escope",d),d,d.estraverse)})(function(a,d,e){function k(b,a){if(!b)throw Error(a);}function h(b,a){function c(b){return typeof b==="object"&&b instanceof Object&&!(b instanceof RegExp)}var d,
e;for(d in a)a.hasOwnProperty(d)&&(e=a[d],c(e)?c(b[d])?h(b[d],e):b[d]=h({},e):b[d]=e);return b}function c(b,a,c,d,e){this.identifier=b;this.from=a;this.tainted=!1;this.resolved=null;this.flag=c;if(this.isWrite())this.writeExpr=d;this.__maybeImplicitGlobal=e}function l(b,a){this.name=b;this.identifiers=[];this.references=[];this.defs=[];this.tainted=!1;this.stack=!0;this.scope=a}function g(a,c){var d,e,g,f;if(a.upper&&a.upper.isStrict)return!0;if(a.type==="function")d=c.body;else if(a.type==="global")d=
c;else return!1;if(r.directive)for(e=0,g=d.body.length;e<g;++e){f=d.body[e];if(f.type!=="DirectiveStatement")break;if(f.raw==='"use strict"'||f.raw==="'use strict'")return!0}else for(e=0,g=d.body.length;e<g;++e){f=d.body[e];if(f.type!==b.ExpressionStatement)break;f=f.expression;if(f.type!==b.Literal||typeof f.value!=="string")break;if(f.raw!=null){if(f.raw==='"use strict"'||f.raw==="'use strict'")return!0}else if(f.value==="use strict")return!0}return!1}function q(a,c){var d;this.type=a.type===b.CatchClause?
"catch":a.type===b.WithStatement?"with":a.type===b.Program?"global":"function";this.set=new s;this.taints=new s;this.dynamic=this.type==="global"||this.type==="with";this.block=a;this.through=[];this.variables=[];this.references=[];this.left=[];this.variableScope=this.type==="global"||this.type==="function"?this:f.variableScope;this.thisFound=this.directCallToEvalScope=this.functionExpressionScope=!1;c.naming?(this.__define(a.id,{type:l.FunctionName,name:a.id,node:a}),this.functionExpressionScope=
!0):(this.type==="function"&&(d=new l("arguments",this),this.taints.set("arguments",!0),this.set.set("arguments",d),this.variables.push(d)),a.type===b.FunctionExpression&&a.id&&new q(a,{naming:!0}));this.upper=f;this.isStrict=g(this,a);this.childScopes=[];f&&f.childScopes.push(this);f=this;if(this.type==="global")v=this,v.implicit={set:new s,variables:[]};o.push(this)}function j(b){this.scopes=b;this.attached=!1}var b,s,f,v,o,r;b=e.Syntax;typeof d.Map!=="undefined"?s=d.Map:(s=function(){this.__data=
{}},s.prototype.get=function(b){b="$"+b;if(this.__data.hasOwnProperty(b))return this.__data[b]},s.prototype.has=function(b){return this.__data.hasOwnProperty("$"+b)},s.prototype.set=function(b,a){this.__data["$"+b]=a},s.prototype["delete"]=function(b){return delete this.__data["$"+b]});c.READ=1;c.WRITE=2;c.RW=3;c.prototype.isStatic=function(){return!this.tainted&&this.resolved&&this.resolved.scope.isStatic()};c.prototype.isWrite=function(){return this.flag&c.WRITE};c.prototype.isRead=function(){return this.flag&
c.READ};c.prototype.isReadOnly=function(){return this.flag===c.READ};c.prototype.isWriteOnly=function(){return this.flag===c.WRITE};c.prototype.isReadWrite=function(){return this.flag===c.RW};l.CatchClause="CatchClause";l.Parameter="Parameter";l.FunctionName="FunctionName";l.Variable="Variable";l.ImplicitGlobalVariable="ImplicitGlobalVariable";q.prototype.__close=function(){var b,a,c,d;if(!this.dynamic||r.optimistic)for(b=0,a=this.left.length;b<a;++b)c=this.left[b],this.__resolve(c)||this.__delegateToUpperScope(c);
else if(this.type==="with")for(b=0,a=this.left.length;b<a;++b)c=this.left[b],c.tainted=!0,this.__delegateToUpperScope(c);else for(b=0,a=this.left.length;b<a;++b){c=this.left[b];d=this;do d.through.push(c),d=d.upper;while(d)}if(this.type==="global"){d=[];for(b=0,a=this.left.length;b<a;++b)c=this.left[b],c.__maybeImplicitGlobal&&!this.set.has(c.identifier.name)&&d.push(c.__maybeImplicitGlobal);for(b=0,a=d.length;b<a;++b)c=d[b],this.__defineImplicit(c.left,{type:l.ImplicitGlobalVariable,name:c.left,
node:c})}this.left=null;f=this.upper};q.prototype.__resolve=function(b){var a;a=b.identifier.name;if(this.set.has(a)){a=this.set.get(a);a.references.push(b);a.stack=a.stack&&b.from.variableScope===this.variableScope;if(b.tainted)a.tainted=!0,this.taints.set(a.name,!0);b.resolved=a;return!0}return!1};q.prototype.__delegateToUpperScope=function(b){this.upper&&this.upper.left.push(b);this.through.push(b)};q.prototype.__defineImplicit=function(a,c){var d,e;if(a&&a.type===b.Identifier)d=a.name,this.implicit.set.has(d)?
(e=this.implicit.set.get(d),e.identifiers.push(a),e.defs.push(c)):(e=new l(d,this),e.identifiers.push(a),e.defs.push(c),this.implicit.set.set(d,e),this.implicit.variables.push(e))};q.prototype.__define=function(a,c){var d,e;if(a&&a.type===b.Identifier)d=a.name,this.set.has(d)?(e=this.set.get(d),e.identifiers.push(a),e.defs.push(c)):(e=new l(d,this),e.identifiers.push(a),e.defs.push(c),this.set.set(d,e),this.variables.push(e))};q.prototype.__referencing=function(a,d,e,g){a&&a.type===b.Identifier&&
(a=new c(a,this,d||c.READ,e,g),this.references.push(a),this.left.push(a))};q.prototype.__detectEval=function(){var b;b=this;this.directCallToEvalScope=!0;do b.dynamic=!0,b=b.upper;while(b)};q.prototype.__detectThis=function(){this.thisFound=!0};q.prototype.__isClosed=function(){return this.left===null};q.prototype.resolve=function(a){var c,d,e;k(this.__isClosed(),"scope should be closed");k(a.type===b.Identifier,"target should be identifier");for(d=0,e=this.references.length;d<e;++d)if(c=this.references[d],
c.identifier===a)return c;return null};q.prototype.isStatic=function(){return!this.dynamic};q.prototype.isArgumentsMaterialized=function(){var b;if(this.type!=="function")return!0;if(!this.isStatic())return!0;b=this.set.get("arguments");k(b,"always have arguments variable");return b.tainted||b.references.length!==0};q.prototype.isThisMaterialized=function(){return this.type!=="function"?!0:!this.isStatic()?!0:this.thisFound};q.mangledName="__$escope$__";q.prototype.attach=function(){this.functionExpressionScope||
(this.block[q.mangledName]=this)};q.prototype.detach=function(){this.functionExpressionScope||delete this.block[q.mangledName]};q.prototype.isUsedName=function(b){if(this.set.has(b))return!0;for(var a=0,c=this.through.length;a<c;++a)if(this.through[a].identifier.name===b)return!0;return!1};j.prototype.__get=function(b){var a,c,d;if(this.attached)return b[q.mangledName]||null;if(q.isScopeRequired(b))for(a=0,c=this.scopes.length;a<c;++a)if(d=this.scopes[a],!d.functionExpressionScope&&d.block===b)return d;
return null};j.prototype.acquire=function(b){return this.__get(b)};j.prototype.release=function(b){if(b=this.__get(b))for(b=b.upper;b;){if(!b.functionExpressionScope)return b;b=b.upper}return null};j.prototype.attach=function(){var b,a;for(b=0,a=this.scopes.length;b<a;++b)this.scopes[b].attach();this.attached=!0};j.prototype.detach=function(){var b,a;for(b=0,a=this.scopes.length;b<a;++b)this.scopes[b].detach();this.attached=!1};q.isScopeRequired=function(a){return q.isVariableScopeRequired(a)||a.type===
b.WithStatement||a.type===b.CatchClause};q.isVariableScopeRequired=function(a){return a.type===b.Program||a.type===b.FunctionExpression||a.type===b.FunctionDeclaration};a.version="1.0.0";a.Reference=c;a.Variable=l;a.Scope=q;a.ScopeManager=j;a.analyze=function(a,d){var g;r=h({optimistic:!1,directive:!1},d);g=o=[];v=f=null;e.traverse(a,{enter:function(a){var d,e,g;q.isScopeRequired(a)&&new q(a,{});switch(a.type){case b.AssignmentExpression:a.operator==="="?f.__referencing(a.left,c.WRITE,a.right,!f.isStrict&&
a.left.name!=null&&a):f.__referencing(a.left,c.RW,a.right);f.__referencing(a.right);break;case b.ArrayExpression:for(d=0,e=a.elements.length;d<e;++d)f.__referencing(a.elements[d]);break;case b.BinaryExpression:f.__referencing(a.left);f.__referencing(a.right);break;case b.CallExpression:f.__referencing(a.callee);for(d=0,e=a.arguments.length;d<e;++d)f.__referencing(a.arguments[d]);!r.ignoreEval&&a.callee.type===b.Identifier&&a.callee.name==="eval"&&f.variableScope.__detectEval();break;case b.CatchClause:f.__define(a.param,
{type:l.CatchClause,name:a.param,node:a});break;case b.ConditionalExpression:f.__referencing(a.test);f.__referencing(a.consequent);f.__referencing(a.alternate);break;case b.DoWhileStatement:f.__referencing(a.test);break;case b.ExpressionStatement:f.__referencing(a.expression);break;case b.ForStatement:f.__referencing(a.init);f.__referencing(a.test);f.__referencing(a.update);break;case b.ForInStatement:a.left.type===b.VariableDeclaration?f.__referencing(a.left.declarations[0].id,c.WRITE,null,!1):f.__referencing(a.left,
c.WRITE,null,!f.isStrict&&a.left.name!=null&&a);f.__referencing(a.right);break;case b.FunctionDeclaration:f.upper.__define(a.id,{type:l.FunctionName,name:a.id,node:a});for(d=0,e=a.params.length;d<e;++d)f.__define(a.params[d],{type:l.Parameter,name:a.params[d],node:a,index:d});break;case b.FunctionExpression:for(d=0,e=a.params.length;d<e;++d)f.__define(a.params[d],{type:l.Parameter,name:a.params[d],node:a,index:d});break;case b.IfStatement:f.__referencing(a.test);break;case b.LogicalExpression:f.__referencing(a.left);
f.__referencing(a.right);break;case b.MemberExpression:f.__referencing(a.object);a.computed&&f.__referencing(a.property);break;case b.NewExpression:f.__referencing(a.callee);for(d=0,e=a.arguments.length;d<e;++d)f.__referencing(a.arguments[d]);break;case b.Property:f.__referencing(a.value);break;case b.ReturnStatement:f.__referencing(a.argument);break;case b.SequenceExpression:for(d=0,e=a.expressions.length;d<e;++d)f.__referencing(a.expressions[d]);break;case b.SwitchStatement:f.__referencing(a.discriminant);
break;case b.SwitchCase:f.__referencing(a.test);break;case b.ThisExpression:f.variableScope.__detectThis();break;case b.ThrowStatement:f.__referencing(a.argument);break;case b.UnaryExpression:f.__referencing(a.argument);break;case b.UpdateExpression:f.__referencing(a.argument,c.RW,null);break;case b.VariableDeclaration:for(d=0,e=a.declarations.length;d<e;++d)g=a.declarations[d],f.variableScope.__define(g.id,{type:l.Variable,name:g.id,node:g,index:d,parent:a}),g.init&&(f.__referencing(g.id,c.WRITE,
g.init,!1),f.__referencing(g.init));break;case b.WhileStatement:f.__referencing(a.test);break;case b.WithStatement:f.upper.__referencing(a.object)}},leave:function(b){for(;f&&b===f.block;)f.__close()}});k(f===null);r=o=v=null;return new j(g)}},this);
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/conf/environments",["require","exports","module"],d):a.conf.environments=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports={builtin:{NaN:!1,Infinity:!1,undefined:!1,eval:!1,parseFloat:!1,parseInt:!1,isNaN:!1,isFinite:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Object:!1,Function:!1,Array:!1,String:!1,Boolean:!1,
Number:!1,Date:!1,RegExp:!1,Error:!1,EvalError:!1,RangeError:!1,ReferenceError:!1,SyntaxError:!1,TypeError:!1,URIError:!1,Math:!1,JSON:!1,ArrayBuffer:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},browser:{addEventListener:!1,applicationCache:!1,atob:!1,Audio:!1,Blob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,crypto:!1,defaultStatus:!1,devicePixelRatio:!1,
dispatchEvent:!1,document:!1,DOMParser:!1,Element:!1,FileReader:!1,find:!1,focus:!1,FormData:!1,frameElement:!1,frames:!1,getComputedStyle:!1,getSelection:!1,history:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,
HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLLabelElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,
HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,Image:!1,indexedDB:!1,innerHeight:!1,innerWidth:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,navigator:!1,Node:!1,NodeFilter:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,
onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,outerHeight:!1,outerWidth:!1,pageXOffset:!1,pageYOffset:!1,parent:!1,postMessage:!1,print:!1,removeEventListener:!1,requestAnimationFrame:!1,resizeBy:!1,resizeTo:!1,screen:!1,screenX:!1,screenY:!1,scroll:!1,scrollbars:!1,scrollBy:!1,scrollTo:!1,scrollX:!1,scrollY:!1,self:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,showModalDialog:!1,stop:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,
SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimationElement:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGComponentTransferFunctionElement:!1,
SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,
SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,
SVGHKernElement:!1,SVGImageElement:!1,SVGLength:!1,SVGLengthList:!1,SVGLinearGradientElement:!1,SVGLineElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGMPathElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,
SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,
SVGRectElement:!1,SVGRenderingIntent:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStyleElement:!1,SVGSVGElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGVKernElement:!1,top:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,
XMLSerializer:!1,XPathEvaluator:!1,XPathExpression:!1,XPathResult:!1},node:{__filename:!1,__dirname:!1,Buffer:!1,console:!1,exports:!0,GLOBAL:!1,global:!1,module:!1,process:!1,require:!1,setTimeout:!1,clearTimeout:!1,setInterval:!1,clearInterval:!1,setImmediate:!1,clearImmediate:!1},amd:{require:!1,define:!1}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/eqeqeq",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){function k(a,d){for(var e=a.getTokens(d),h=e.length,j=d.operator,b=0;b<h;b++){var k=e[b];if(k.value===j)return k}return null}function h(a){return a&&a.type?a.type==="Literal"&&a.value==null||a.type==="Identifier"&&a.name==="undefined":!1}
e.exports=function(a){return{BinaryExpression:function(d){if(!h(d.left)&&!h(d.right)){var e=d.operator;e==="=="?a.report(d,"Expected '===' and instead saw '=='.",null,k(a,d)):e==="!="&&a.report(d,"Expected '!==' and instead saw '!='.",null,k(a,d))}}}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/util",["require","exports","module"],d):a.util=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){d.mixin=function(a,d){Object.keys(d).forEach(function(c){a[c]=d[c]})};d.mergeConfigs=function h(a,d){Object.keys(d).forEach(function(e){var q=d[e];a[e]=typeof q==="object"&&!Array.isArray(q)?h(a[e]||{},d[e]):d[e]});return a};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require("../util"),require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/no-redeclare",["eslint/util","require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e,k){k.exports=function(d){function c(b,a){d.report(b,"'{{name}}' is already defined.",{name:a})}function e(b,a){a.variables.forEach(function(c){c.defs.some(function(c){return c.type==="FunctionName"?
(c=c.name.name,Object.prototype.hasOwnProperty.call(b,c)||(b[c]=a),!0):!1})})}function g(b){for(var c=b.upper,d=Object.create(null);c&&!c._namedFunctions;)c=c.upper;c&&a.mixin(d,c._namedFunctions);e(d,b);return b._namedFunctions=d}function k(b){return b.defs.some(function(b){return b.type==="Parameter"})}function j(b){var a=d.getScope(),e=g(a);a.variables.forEach(function(d){var g;b.type!=="Program"&&(g=e[d.name])&&g!==a&&!k(d)&&c(d.defs[0].name,d.name);d.defs.filter(function(b){return b.type!=="ImplicitGlobalVariable"}).forEach(function(b,
a){a>0&&c(b.name,b.name.name)})})}return{Program:j,FunctionDeclaration:j,FunctionExpression:j}};return k.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/no-undef",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){function k(a){return a.defs.every(function(a){return a.type==="ImplicitGlobalVariable"})}function h(a,d){var e=null;a.variables.some(function(a){return a.name===d.identifier.name&&(!k(a)||Object.hasOwnProperty.call(a,"writeable"))?(e=
a,!0):!1});return e}e.exports=function(a){return{Program:function(){var d=a.getScope();d.through.forEach(function(e){var k=h(d,e),j=e.identifier.name;k?e.isWrite()&&k.writeable===!1&&a.report(e.identifier,"'{{name}}' is read only.",{name:j}):a.report(e.identifier,"'{{name}}' is not defined.",{name:j})})}}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/no-unused-vars",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports=function(a){function d(a){return a.isRead()}function c(a,c){var d=c.references;a.type==="global"&&(d=d.concat(a.through.filter(function(b){return b.identifier.name===c.name})));return d}function e(){var g=a.getScope();
g.variables.forEach(function(e){if(e.defs.length&&e.defs[0].type!=="Parameter"){var l=c(g,e),e=e.defs[0].node.id;l.length?l.some(d)||a.report(e,"'{{name}}' is never read.",{name:e.name}):a.report(e,"'{{name}}' is never used.",{name:e.name})}})}return{Program:e,FunctionDeclaration:e,FunctionExpression:e}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/no-use-before-define",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports=function(a){function d(a,b){for(var c=b;;){if(!c)return null;var e=a.identifier.name,g;c.variables.some(function(b){return b.name===e?(g=b,!0):!1});if(g)return g;c=c.upper}}function c(){var c=a.getScope();c.references.forEach(function(b){var e=
d(b,c),b=b.identifier,f=b.name,l;if(e&&(l=e.defs).length&&b.range[0]<l[0].node.range[0])e=l[0].type,!q&&e==="FunctionName"||!g&&e==="Variable"||a.report(b,"'{{name}}' was used before it was defined.",{name:f})})}var e=a.options,g=typeof e[0]==="boolean"?e[0]:!0,q=typeof e[1]==="boolean"?e[1]:!1;return{Program:c,FunctionExpression:c,FunctionDeclaration:c}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/semi",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports=function(a){function d(c){var e=a.getTokens(c),e=e[e.length-1];(!e||!(e.type==="Punctuator"&&e.value===";"))&&a.report(c,"Missing semicolon.",null,e)}return{VariableDeclaration:function(c){var e=a.getAncestors(c),e=e[e.length-1],
g=e.type;g==="ForStatement"&&e.init===c||g==="ForInStatement"&&e.left===c||d(c)},ExpressionStatement:d,ReturnStatement:d}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/no-extra-semi",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports=function(a){return{EmptyStatement:function(d){var c=a.getTokens(d);(c=c[c.length-1])&&c.type==="Punctuator"&&c.value===";"&&a.report(d,"Unnecessary semicolon.",null,c)}}};return e.exports});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules/missing-doc",["require","exports","module"],d):a.rules.noundef=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){e.exports=function(a){function d(e){if(a.options){var g,h;switch(e.type){case "Property":if(a.options[0]==="expr"&&e.value&&e.value.type==="FunctionExpression"&&(g=a.getComments(e),!g||g.leading.length<1)){switch(e.key.type){case "Identifier":h=
e.key.name;break;case "Literal":h=e.key.value}c(e.key,h)}break;case "FunctionDeclaration":a.options[0]==="decl"&&(g=a.getComments(e),(!g||g.leading.length<1)&&c(e.id,e.id.name));break;case "ExpressionStatement":if(a.options[0]==="expr"&&e.expression&&e.expression.type==="AssignmentExpression"){var j=e.expression;if(j.right&&j.right.type==="FunctionExpression"&&j.left&&j.left.type==="MemberExpression"&&(g=a.getComments(e),!g||g.leading.length<1))h=j.left.computed===!0?j.left.property.value:j.left.property.name,
c(j.left.property,h)}}}}function c(c,d){a.report(c,"Missing documentation for function '{{name}}'",{name:d})}return{Property:d,FunctionDeclaration:d,ExpressionStatement:d}};return e.exports});
define("eslint/load-rules-async","eslint/rules/eqeqeq,eslint/rules/no-redeclare,eslint/rules/no-undef,eslint/rules/no-unused-vars,eslint/rules/no-use-before-define,eslint/rules/semi,eslint/rules/no-extra-semi,eslint/rules/missing-doc".split(","),function(a,d,e,k,h,c,l,g){return function(){return{eqeqeq:a,"no-redeclare":d,"no-undef":e,"no-unused-vars":k,"no-use-before-define":h,semi:c,"no-extra-semi":l,"missing-func-decl-doc":g,"missing-func-expr-doc":g}}});
(function(a,d){typeof exports==="object"?module.exports=d(require("./load-rules"),require,exports,module):typeof define==="function"&&define.amd?define("eslint/rules",["./load-rules-async","require","exports","module"],d):a.rules=d(a.loadRules,function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){function k(c){var d=a(c);Object.keys(d).forEach(function(a){h[a]=d[a]})}var h=Object.create(null);e.load=k;e.get=function(a){return h[a]};e.define=function(a,d){h[a]=d};k();return e});
(function(a,d){typeof exports==="object"?module.exports=d(require,exports,module):typeof define==="function"&&define.amd?define("eslint/rule-context",["require","exports","module"],d):a.ruleContext=d(function(d){return a[d]},a,{exports:a})})(this,function(a,d,e){function k(a,d,e){Object.defineProperty(this,"id",{value:a});Object.defineProperty(this,"options",{value:e});h.forEach(function(a){this[a]=function(){return d[a].apply(d,arguments)}},this);this.report=function(e,g,b,h){d.report(a,e,g,b,h)}}
var h="getSource,getTokens,getComments,getAllComments,getAncestors,getScope".split(",");k.prototype={constructor:k};e.exports=k;return e.exports});
define("orion/EventTarget",[],function(){function a(){this._namedListeners={}}a.prototype={dispatchEvent:function(a){if(!a.type)throw Error("unspecified type");var e=this._namedListeners[a.type];e&&e.forEach(function(e){try{typeof e==="function"?e(a):e.handleEvent(a)}catch(h){typeof console!=="undefined"&&console.log(h)}});return!a.defaultPrevented},addEventListener:function(a,e){if(typeof e==="function"||e.handleEvent)this._namedListeners[a]=this._namedListeners[a]||[],this._namedListeners[a].push(e)},
removeEventListener:function(a,e){var k=this._namedListeners[a];if(k)for(var h=0;h<k.length;h++)if(k[h]===e){k.length===1?delete this._namedListeners[a]:k.splice(h,1);break}}};a.prototype.constructor=a;a.attach=function(d){var e=new a;d.dispatchEvent=e.dispatchEvent.bind(e);d.addEventListener=e.addEventListener.bind(e);d.removeEventListener=e.removeEventListener.bind(e)};return a});
define("eslint/events",["orion/EventTarget","orion/objects"],function(a,d){function e(){this._eventTarget=new a}function k(a,d){if(typeof d!=="function")throw Error("addListener only takes instances of Function");var g=typeof this._maxListeners!=="undefined"?this._maxListeners:h,k;g!==0&&(k=e.listenerCount(this,a)>=g)&&typeof console!=="undefined"&&console.error("Possible EventEmitter memory leak: "+k+" listeners added.");this.emit("newListener",d);this._eventTarget.addEventListener(a,d);return this}
var h=10;e.prototype.constructor=e;d.mixin(e.prototype,{_maxListeners:10,addListener:k,on:k,once:function(a,d){var e=this,h=function(j){try{d.apply(this,Array.prototype.slice.call(arguments))}finally{e.removeListener(a,h)}};this.addListener(a,h);return this},removeListener:function(a,d){if(typeof d!=="function")throw Error("removeListener only takes instances of Function");this._eventTarget.removeEventListener(a,d);this.emit("removeListener",d);return this},removeAllListeners:function(a){var d=this._eventTarget._namedListeners,
e=this,h=function(a){var b=d[a];b&&(b.forEach(e.emit.bind(e,"removeListener")),delete d[a])};typeof a==="undefined"?Object.keys(d).forEach(h):h(a);return this},setMaxListeners:function(a){if(typeof a!=="number")throw Error("setMaxListeners only takes a number");this._maxListeners=a},listeners:function(a){return(a=this._eventTarget._namedListeners[a])?a.slice():[]},emit:function(a){var d=this._eventTarget._namedListeners[a];if(!d){if(a==="error")throw Error("Uncaught, unspecified 'error' event.");
return!1}var e=Array.prototype.slice.call(arguments,1),h=this;d.forEach(function(a){a.apply(h,e)});return!0}});e.listenerCount=function(a,d){var e=a._eventTarget._namedListeners[d];return e?e.length:0};return{EventEmitter:e}});
(function(a,d){typeof exports==="object"?module.exports=d(require("esprima"),require("estraverse"),require("escope"),require("../conf/environments"),require("./rules"),require("./util"),require("./rule-context"),require("events"),require,exports,module):typeof define==="function"&&define.amd?define("eslint/eslint","esprima,estraverse,escope,eslint/conf/environments,./rules,./util,./rule-context,./events,require,exports,module".split(","),d):a.eslint=d(a.esprima,a.estraverse,a.escope,a.environments,
a.rules,a.util,a.RuleContext,a.events,function(d){return a[d]},a,{exports:a})})(this,function(a,d,e,k,h,c,l,g,q,j,b){function s(b,a){b=b.replace(/\s*:\s*/g,":");b=b.replace(/\s*,\s*/g,",");b.split(/\s|,+/).forEach(function(b){if(b){var c=b.indexOf(":"),d;c!==-1&&(d=b.substring(c+1,b.length),b=b.substring(0,c));a(b,d)}})}function f(b,a){if(b.type==="Block"){var d=b.value,e;if(e=/^\s*(globals?)/.exec(d))return s(d.substring(e.index+e[1].length),function(b,c){a[b]=c==="true"}),!0;else(e=/^\s*(js[lh]int)/.exec(d))&&
s(d.substring(e.index+e[1].length),function(b,d){d==="true"&&Object.hasOwnProperty.call(k,b)&&c.mixin(a,k[b])})}}function v(b,a){var c=null;b.variables.some(function(b){return b.name===a?(c=b,!0):!1});return c}function o(b,a,c){var d={},g=k.builtin;Object.keys(g).forEach(function(b){d[b]=g[b]});c.env&&Object.keys(c.env).forEach(function(b){var a=k[b];c.env[b]&&a&&Object.keys(a).forEach(function(b){d[b]=a[b]})});b.comments.forEach(function(b){f(b,d)});c.globals?Object.keys(c.globals).forEach(function(b){d[b]=
c.globals[b]}):c.global&&Object.keys(c.global).forEach(function(b){d[b]=c.global[b]});Object.keys(d).forEach(function(b){var c=v(a,b);c||(c=new e.Variable(b,a),a.variables.push(c));c.writeable=d[b]})}function r(b,a){var d={};b.comments.forEach(function(b){b.type==="Block"&&(b=b.value.trim(),b.indexOf("eslint")===0&&(b=b.substr(6,b.length-6),s(b,function(b,a){d[b]=JSON.parse(a)})))});return c.mergeConfigs(a.rules,d)}var w=g.EventEmitter;b.exports=function(){var b=Object.create(new w),c=[],g=!1,f=null,
j=null,k=null,s=null,v=null;b.reset=function(){this.removeAllListeners();c=[];g=!1;v=s=k=f=j=null};b.verify=function(g,i,q){var w=g&&typeof g==="object"?g:null,R=!1;q||this.reset();try{w=w||a.parse(g,{loc:!0,range:!0,raw:!0,tokens:!0,comment:!0})}catch(ea){R=!0,c.push({fatal:!0,message:ea.message.substring(ea.message.indexOf(":")+1).trim(),line:ea.lineNumber,column:ea.column})}if(!R)i.rules=r(w,i),Object.keys(i.rules).filter(function(b){if(typeof i.rules[b]==="number")return i.rules[b]>0;else if(Array.isArray(i.rules[b]))return i.rules[b][0]>
0}).forEach(function(a){var c=h.get(a),d=[],e;Array.isArray(i.rules[a])&&(d=i.rules[a].slice(1));if(c)e=c(new l(a,b,d)),Object.keys(e).forEach(function(a){b.on(a,e[a])});else throw Error("Definition for rule '"+a+"' was not found.");}),j=i,f=g&&typeof g==="string"?g:null,v=new d.Controller,s=e.analyze(w,{ignoreEval:!0}).scopes,k={},w.tokens.forEach(function(b){k[b.range[0]]=b}),o(w,s[0],j),v.traverse(w,{enter:function(a){b.emit(a.type,a)},leave:function(a){b.emit(a.type+":after",a)}});return c};b.report=
function(a,d,e,g,f){Object.keys(g||{}).forEach(function(b){var a=RegExp("{{"+b.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")+"}}","g");e=e.replace(a,g[b])});c.push({ruleId:a,node:d,message:e,line:d.loc?d.loc.start.line:null,column:d.loc?d.loc.start.column:null,source:b.getSource(d),related:typeof f!=="undefined"?f:null})};b.getSource=function(b,a,c){return b&&typeof f==="string"?f?f.slice(b.range[0]-(a||0),b.range[1]+(c||0)):null:f||null};b.getAllComments=function(){return v.root.comments||
[]};b.getComments=function(b){var a=v.root;g||(d.attachComments(a,a.comments,a.tokens),g=!0);return{leading:b.leadingComments||[],trailing:b.trailingComments||[]}};b.getTokens=function(b,a,c){if(b){a=b.range[0]-(a||0);b=b.range[1]+(c||0);for(c=[];a<b;)k[a]?(c.push(k[a]),a=k[a].range[1]):a+=1;return c}else return Object.keys(k).map(function(b){return b})||null};b.getAncestors=function(){return v.parents()};b.getScope=function(){var b=v.parents().reverse(),a=null;if(b.length){var c=v.current();(c.type===
"FunctionDeclaration"||c.type==="FunctionExpression")&&b.splice(0,0,c);for(c=0;c<b.length;c++)if(e.Scope.isScopeRequired(b[c])){a=b[c];break}for(b=0;b<s.length;b++)if(a.type===s[b].block.type&&a.range[0]===s[b].block.range[0]&&a.range[1]===s[b].block.range[1])return s[b]}else return s[0]};var R=b.defineRule=function(b,a){h.define(b,a)};b.defineRules=function(b){Object.getOwnPropertyNames(b).forEach(function(a){R(a,b[a])})};b.defaults=function(){return q("./conf/eslint.json")};return b}();return b.exports});
define("eslint",["eslint/eslint"],function(a){return a});
define("javascript/finder",["estraverse"],function(a){return{punc:"\n\t\r (){}[]:;,.+=-*^&@!%~`'\"/\\",findWord:function(a,e){if(a&&e){for(var k=this.punc.indexOf(a.charAt(e))>-1,h=k?e-1:e;h>=0;){if(this.punc.indexOf(a.charAt(h))>-1)break;h--}for(var c=h,h=e;h<=a.length;){if(this.punc.indexOf(a.charAt(h))>-1)break;h++}if(!((c===e||k&&c===e-1)&&h===e))return c===e?a.substring(c,h):a.substring(c+1,h)}return null},findNode:function(d,e){var k=null;d!=null&&d>-1&&e&&a.traverse(e,{enter:function(e){if(e.type&&
e.range)if(e.range[0]<=d)k=e;else return a.VisitorOption.Break}});return k},findToken:function(a,e){if(a!=null&&a>-1&&e&&e.length>0){var k=0,h=e.length-1,c,l=0;c=e[0];if(a>=c.range[0]&&a<c.range[1])return c.index=a,c;c=e[h];if(a>=c.range[0])return c.index=h,c;for(;k<=h;){l=Math.floor((k+h)/2);c=e[l];if(a<c.range[0])h=l-1;else if(a>c.range[1])k=l+1;else if(a===c.range[1])if(e[l+1].range[0]===c.range[1])k=l+1;else return c.index=l,c;else if(a>=c.range[0]&&a<c.range[1])return c.index=l,c;if(k===h){c=
e[k];if(a>=c.range[0]&&a<=c.range[1])return c.index=k,c;break}}}return null},findComment:function(a,e){if(e.comments){for(var k=e.comments,h=k.length,c=0;c<h;c++){var l=k[c];if(l.range[0]<=a&&l.range[1]>a)return l;else if(l.range[0]>a)break}return null}}}});
define("javascript/eslint/validator",["eslint","orion/objects","javascript/astManager","javascript/finder"],function(a,d,e,k){function h(a){this.astManager=a}function c(a){var c,d;if(a.node&&(c=a.node.range[0],d=a.node.range[1],a.related))d=a.related,c=d.range[0],d=d.range[1];var b=a.message;a:{var e=2,e=Array.isArray(l.rules[a.ruleId])?l.rules[a.ruleId][0]:l.rules[a.ruleId];switch(e){case 1:a="warning";break a}a="error"}return{description:b,severity:a,start:c,end:d}}var l={rules:{eqeqeq:1,"no-redeclare":1,
"no-undef":2,"no-unused-vars":1,"no-use-before-define":1,semi:1,"no-extra-semi":1,"missing-func-decl-doc":[0,"decl"],"missing-func-expr-doc":[0,"expr"]},setOption:function(a,c){typeof c==="number"&&(Array.isArray(this.rules[a])?this.rules[a][0]=c:this.rules[a]=c)}};d.mixin(h.prototype,{_extractParseErrors:function(a){var c=[],d=Object.create(null),b=a.errors;if(b)for(var h=b.length,f=0;f<h;f++){var l=b[f],o=null;l.end&&l.token?o={range:[l.index,l.end],value:l.token}:a.tokens.length>0&&(o=k.findToken(l.index,
a.tokens));if(o){var r=l.message;if(d[l.index]!==r){d[l.index]=r;if(l.type)switch(l.type){case e.ErrorTypes.Unexpected:l.message="Syntax error on token '"+o.value+"', delete this token.";break;case e.ErrorTypes.EndOfInput:l.message="Syntax error, incomplete statement."}l.node=o;c.push(l)}}}return c},computeProblems:function(d){var e=this;return this.astManager.getAST(d).then(function(d){var b=[],g;try{b=a.verify(d,l)}catch(f){g=f}d=e._extractParseErrors(d);b=[].concat(b).concat(d).map(c);g&&!d.length&&
b.push({start:0,description:"ESLint could not validate this file because an error occurred: "+g.toString(),severity:"error"});return{problems:b}})},updated:function(a){a&&(l.setOption("missing-func-decl-doc",a.validate_func_decl),l.setOption("missing-func-expr-doc",a.validate_func_expr),l.setOption("eqeqeq",a.validate_eqeqeq),l.setOption("no-redeclare",a.validate_no_redeclare),l.setOption("no-undef",a.validate_no_undef),l.setOption("no-unused-vars",a.validate_no_unused_vars),l.setOption("no-use-before-define",
a.validate_use_before_define),l.setOption("semi",a.validate_missing_semi),l.setOption("no-extra-semi",a.validate_unnecessary_semi))}});return h});
define("javascript/occurrences",["orion/objects","estraverse","javascript/finder"],function(a,d,e){function k(){}function h(a){this.astManager=a}a.mixin(k.prototype,{occurrences:[],scopes:[],context:null,thisCheck:!1,enter:function(a){var e,g;switch(a.type){case d.Syntax.Program:this.occurrences=[];this.scopes=[{range:a.range,occurrences:[]}];this.defscope=this.defnode=null;break;case d.Syntax.FunctionDeclaration:this.checkId(a.id,!0);this._enterScope(a);if(a.params){e=a.params.length;for(g=0;g<e;g++)if(this.checkId(a.params[g],
!0))return d.VisitorOption.Skip}break;case d.Syntax.FunctionExpression:if(a.params){if(this._enterScope(a))return d.VisitorOption.Skip;e=a.params.length;for(g=0;g<e;g++)if(this.checkId(a.params[g],!0))return d.VisitorOption.Skip}break;case d.Syntax.AssignmentExpression:this.checkId(a.left);this.checkId(a.right);break;case d.Syntax.ArrayExpression:if(a.elements){e=a.elements.length;for(g=0;g<e;g++)this.checkId(a.elements[g])}break;case d.Syntax.MemberExpression:this.checkId(a.object);a.computed&&this.checkId(a.property);
break;case d.Syntax.BinaryExpression:this.checkId(a.left);this.checkId(a.right);break;case d.Syntax.UnaryExpression:this.checkId(a.argument);break;case d.Syntax.IfStatement:this.checkId(a.test);break;case d.Syntax.SwitchStatement:this.checkId(a.discriminant);break;case d.Syntax.UpdateExpression:this.checkId(a.argument);break;case d.Syntax.ConditionalExpression:this.checkId(a.test);this.checkId(a.consequent);this.checkId(a.alternate);break;case d.Syntax.CallExpression:this.checkId(a.callee,!1);if(a.arguments){e=
a.arguments.length;for(g=0;g<e;g++)this.checkId(a.arguments[g])}break;case d.Syntax.ReturnStatement:this.checkId(a.argument);break;case d.Syntax.ObjectExpression:if(this._enterScope(a))return d.VisitorOption.Skip;if(a.properties){e=a.properties.length;for(g=0;g<e;g++){var h=a.properties[g];if(this.thisCheck&&h.value&&h.value.type===d.Syntax.FunctionExpression)h.value.isprop=!0;this.checkId(h.value)}}break;case d.Syntax.VariableDeclarator:this.checkId(a.id,!0);this.checkId(a.init);break;case d.Syntax.NewExpression:this.checkId(a.callee,
!1);if(a.arguments){e=a.arguments.length;for(g=0;g<e;g++)this.checkId(a.arguments[g])}break;case d.Syntax.LogicalExpression:this.checkId(a.left);this.checkId(a.right);break;case d.Syntax.ThisExpression:if(this.thisCheck&&(e=this.scopes[this.scopes.length-1],e.occurrences.push({start:a.range[0],end:a.range[1]}),a.range[0]===this.context.token.range[0]))this.defscope=e}},_enterScope:function(a){if(this.thisCheck)switch(a.type){case d.Syntax.ObjectExpression:this.scopes.push({range:a.range,occurrences:[]});
if(this.defscope)return!0;break;case d.Syntax.FunctionExpression:if(!a.isprop&&(this.scopes.push({range:a.range,occurrences:[]}),this.defscope))return!0}else switch(a.type){case d.Syntax.FunctionDeclaration:case d.Syntax.FunctionExpression:this.scopes.push({range:a.range,occurrences:[]})}return!1},leave:function(a){if(this.thisCheck)switch(a.type){case d.Syntax.FunctionExpression:if(a.isprop){delete a.isprop;break}case d.Syntax.ObjectExpression:case d.Syntax.Program:if(this._popScope())return d.VisitorOption.Break}else switch(a.type){case d.Syntax.FunctionExpression:case d.Syntax.FunctionDeclaration:case d.Syntax.Program:if(this._popScope())return d.VisitorOption.Break}},
_popScope:function(){var a=this.scopes.pop();if(this.defscope){for(var d=a.occurrences.length,e=0;e<d;e++)this.occurrences.push(a.occurrences[e]);if(this.defscope.range[0]===a.range[0]&&this.defscope.range[1]===a.range[1])return!0}return!1},checkId:function(a,e){if(!this.thisCheck&&a&&a.type===d.Syntax.Identifier&&a.name===this.context.word){var g=this.scopes[this.scopes.length-1];if(e){if(this.defscope)if(a.range[0]>this.context.start)return!0;else this.occurrences=[],g.occurrences=[];if(g&&g.range[0]<=
this.context.start&&g.range[1]>=this.context.end)this.defscope={range:g.range}}g.occurrences.push({start:a.range[0],end:a.range[1]})}return!1}});k.prototype.constructor=k;a.mixin(h.prototype,{visitor:null,getVisitor:function(a){if(!this.visitor)this.visitor=new k,this.visitor.enter=this.visitor.enter.bind(this.visitor),this.visitor.leave=this.visitor.leave.bind(this.visitor);this.visitor.thisCheck=a.token&&a.token.type==="Keyword"&&a.token.value==="this";this.visitor.context=a;return this.visitor},
_nameFromNode:function(a){switch(a.type){case d.Syntax.Identifier:return a.value;case "Keyword":return"this"}},_skip:function(a,e){return!e?!0:e.type==="Keyword"?e.value!=="this":e.type!==d.Syntax.Identifier},_getToken:function(a,d){if(d.tokens&&d.tokens.length>0){var g=e.findToken(a,d.tokens);if(g){if(g.type==="Punctuator"){var h=g.index;if(a===g.range[0]&&h!=null&&h>0)if(h=d.tokens[h-1],h.range[1]!==g.range[0])return null;else g=h}if(g.type==="Identifier"||g.type==="Keyword"&&g.value==="this")return g}}return null},
computeOccurrences:function(a,e){var g=this;return this.astManager.getAST(a).then(function(a){if(a){var c=g._getToken(e.selection.start,a);if(!g._skip(e,c,a))return c={start:e.selection.start,end:e.selection.end,word:g._nameFromNode(c),token:c},c=g.getVisitor(c),d.traverse(a,c),c.occurrences}return[]})}});h.prototype.contructor=h;return{JavaScriptOccurrences:h}});
define("javascript/signatures",[],function(){return{computeSignature:function(a){return a?a.sig?a.sig:{sig:this.getNameFrom(a),range:this.getSignatureSourceRangeFrom(a)}:null},getParamsFrom:function(a){if(a&&(a=a.params)&&a.length>0){for(var d=a.length,e="",k=0;k<d;k++)e+=a[k].name?a[k].name:"Object",k<d-1&&(e+=", ");return e}},getNameFrom:function(a){var d="Anonyous "+a.type;if(a&&a.type)if(a.type==="FunctionDeclaration")a.id&&a.id.name&&(d=a.id.name+"(",(a=this.getParamsFrom(a))&&(d+=a),d+=")");
else if(a.type==="FunctionExpression")d="function(",(a=this.getParamsFrom(a))&&(d+=a),d+=")";else if(a.type==="ObjectExpression")d="closure {...}";else if(a.type==="Property"){if(a.value)if(a.value.type==="FunctionExpression")a.key?a.key.name?d=a.key.name+"(":a.key.value&&(d=a.key.value+"("):d="function(",(a=this.getParamsFrom(a.value))&&(d+=a),d+=")";else if(a.value.type==="ObjectExpression")a.key&&(a.key.name?d=a.key.name+" {...}":a.key.value&&(d=a.key.value+" {...}"));else if(a.key)if(a.key.name)d=
a.key.name;else if(a.key.value)d=a.key.value}else if(a.type==="VariableDeclarator")a.init&&(a.init.type==="ObjectExpression"?a.id&&a.id.name&&(d="var "+a.id.name+" = {...}"):a.init.type==="FunctionExpression"&&(a.id&&a.id.name?(d=a.id.name+"(",(a=this.getParamsFrom(a.init))&&(d+=a),d+=")"):d=this.getNameFrom(a.init)));else if(a.type==="AssignmentExpression"){if(a.left&&a.right){var e=a.right.type==="ObjectExpression";if(e||a.right.type==="FunctionExpression")a.left.name?d=a.left.name:a.left.type===
"MemberExpression"&&(d=this.expandMemberExpression(a.left,"")),d?e?d+=" {...}":(d+="(",(a=this.getParamsFrom(a.right))&&(d+=a),d+=")"):d=this.getNameFrom(a.right)}}else if(a.type==="ReturnStatement"&&a.argument&&(a.argument.type==="ObjectExpression"||a.argument.type==="FunctionExpression"))d="return {...}";return d},expandMemberExpression:function(a,d){return a.type==="MemberExpression"?(a.property&&a.property.name&&(d=d&&d.length>0?a.property.name+"."+d:a.property.name),a.object&&a.object.name&&
(d=a.object.name+"."+d),this.expandMemberExpression(a.object,d)):d},getSignatureSourceRangeFrom:function(a){var d=[0,0];if(a){if(a.type==="AssignmentExpression"){if(a.left&&a.left.range)d=a.left.range}else if(a.type==="Property"){if(a.key&&a.key.range)d=a.key.range}else if(a.type==="ReturnStatement")d[0]=a.range[0],d[1]=d[0]+6;else if(a.id&&a.id.range)d=a.id.range;else if(a.range)d=a.range,a.type==="FunctionExpression"&&(d[1]=d[0]+8);d[0]<1&&(d[0]=1)}return d}}});
define("javascript/outliner",["orion/objects","javascript/signatures","estraverse"],function(a,d,e){function k(){}function h(a){this.astManager=a}a.mixin(k.prototype,{outline:[],scope:[],enter:function(a){var h,g=this;if(a.type===e.Syntax.FunctionDeclaration)(h=this.addElement(d.computeSignature(a)))&&this.scope.push(h);else if(a.type===e.Syntax.FunctionExpression)(h=this.addElement(d.computeSignature(a)))&&this.scope.push(h),delete a.sig;else if(a.type===e.Syntax.ObjectExpression)(h=this.addElement(d.computeSignature(a)))&&
this.scope.push(h),delete a.sig,a.properties&&a.properties.forEach(function(a){if(a.value)a.value.type===e.Syntax.FunctionExpression||a.value.type===e.Syntax.ObjectExpression?a.value.sig=d.computeSignature(a):g.addElement(d.computeSignature(a))});else if(a.type===e.Syntax.VariableDeclaration)a.declarations&&a.declarations.forEach(function(a){if(a.init&&a.init.type===e.Syntax.ObjectExpression)a.init.sig=d.computeSignature(a)});else if(a.type===e.Syntax.AssignmentExpression){if(a.left&&a.right&&(a.right.type===
e.Syntax.ObjectExpression||a.right.type===e.Syntax.FunctionExpression))a.right.sig=d.computeSignature(a)}else if(a.type===e.Syntax.ReturnStatement&&a.argument&&(a.argument.type===e.Syntax.ObjectExpression||a.argument.type===e.Syntax.FunctionExpression))a.argument.sig=d.computeSignature(a)},leave:function(a){(a.type===e.Syntax.ObjectExpression||a.type===e.Syntax.FunctionDeclaration||a.type===e.Syntax.FunctionExpression)&&this.scope.pop()},addElement:function(a){if(a){a={label:a.sig,start:a.range[0],
end:a.range[1]};if(this.scope.length<1)this.outline.push(a);else{var d=this.scope[this.scope.length-1];if(!d.children)d.children=[];d.children.push(a)}return a}}});k.prototype.constructor=k;a.mixin(h.prototype,{visitor:null,getVisitor:function(){if(!this.visitor)this.visitor=new k,this.visitor.enter=this.visitor.enter.bind(this.visitor),this.visitor.leave=this.visitor.leave.bind(this.visitor);this.visitor.outline=[];return this.visitor},computeOutline:function(a){var d=this;return this.astManager.getAST(a).then(function(a){if(a){var c=
d.getVisitor();e.traverse(a,c);return c.outline}return[]})}});h.prototype.contructor=h;return{JSOutliner:h}});
define("orion/i18nUtil",["require","orion/Deferred"],function(a,d){function e(a){if(a=localStorage.getItem("orion/messageBundle/"+a))if(a=JSON.parse(a),a._expires&&a._expires>(new Date).getTime())return delete a._expires,a;return null}var k={};return{getMessageBundle:function(h){function c(b){b?a(["i18n!"+h],function(a){if(a){var b=h;a._expires=(new Date).getTime()+9E5;localStorage.setItem("orion/messageBundle/"+b,JSON.stringify(a));delete a._expires}g.resolve(a)}):l(Error(h))}function l(a){g.reject(a)}
if(k[h])return k[h];var g=new d;k[h]=g;var q=e(h);if(q)return g.resolve(q),g;try{a([h],c,l)}catch(j){a(["orion/i18n!"+h],c,l)}return g},formatMessage:function(a){var c=arguments;return a.replace(/\$\{([^\}]+)\}/g,function(a,d){return c[(d<<0)+1]})}}});
(function(a,d){typeof define==="function"&&define.amd?define("orion/plugin",["orion/Deferred"],d):typeof exports==="object"?module.exports=d(require("orion/Deferred")):(a.orion=a.orion||{},a.orion.PluginProvider=d(a.orion.Deferred))})(this,function(a){function d(a,d){this.__objectId=a;this.__methods=d}return function(e){function k(a){v&&(typeof ArrayBuffer==="undefined"&&(a=JSON.stringify(a)),v===self?v.postMessage(a):v.postMessage(a,"*"))}function h(){var a=[];Object.keys(B).forEach(function(b){var c=
B[b];a.push({serviceId:b,names:c.names,methods:c.methods,properties:c.properties})});return{headers:s||{},services:a}}function c(a,b){if(b&&b instanceof XMLHttpRequest){var c,d;try{c=b.status,d=b.statusText}catch(e){c=0,d=""}return{status:c||0,statusText:d}}return b}function l(a){var b=a?JSON.parse(JSON.stringify(a,c)):a;if(a instanceof Error)b.__isError=!0,b.message=b.message||a.message,b.name=b.name||a.name;return b}function g(b){if(!v)return(new a).reject(Error("plugin not connected"));b.id=String(o++);
var c=new a;p[b.id]=c;c.then(null,function(a){f&&a instanceof Error&&a.name==="Cancel"&&Q({requestId:b.id,method:"cancel",params:a.message?[a.message]:[]})});var e=Object.prototype.toString;b.params.forEach(function(a,f){if(e.call(a)==="[object Object]"&&!(a instanceof d)){var g,h;for(g in a)e.call(a[g])==="[object Function]"&&(h=h||[],h.push(g));if(h){var j=r++;i[j]=a;g=function(){delete i[j]};c.then(g,g);b.params[f]=new d(j,h)}}});Q(b);return c.promise}function q(a,b){a||a===0?Q({id:a,result:null,
error:b}):console.log(b)}function j(a,b,c,d){d.forEach(function(a,b){if(a&&typeof a.__objectId!=="undefined"){var c={};a.__methods.forEach(function(b){c[b]=function(){return g({objectId:a.__objectId,method:b,params:Array.prototype.slice.call(arguments)})}});d[b]=c}});var e=typeof a===void 0?null:{id:a,result:null,error:null};try{var f=c.apply(b,d);if(e)f&&typeof f.then==="function"?(z[a]=f,f.then(function(b){delete z[a];e.result=b;Q(e)},function(b){if(z[a])delete z[a],e.error=l(b),Q(e)},function(){Q({responseId:a,
method:"progress",params:Array.prototype.slice.call(arguments)})})):(e.result=f,Q(e))}catch(h){if(e)e.error=l(h),Q(e)}}function b(a){if(a.source===v){a=typeof a.data!=="string"?a.data:JSON.parse(a.data);try{if(a.method){var b=a.method,c=a.params||[];if("serviceId"in a){var d=B[a.serviceId];d||q(a.id,"service not found");d=d.implementation;b in d?j(a.id,d,d[b],c):q(a.id,"method not found")}else if("objectId"in a){var e=i[a.objectId];e||q(a.id,"object not found");!b in e?j(a.id,e,e[b],c):q(a.id,"method not found")}else if("requestId"in
a){var f=z[a.requestId];f&&b==="cancel"&&f.cancel&&f.cancel.apply(f,c)}else if("responseId"in a){var g=p[a.responseId];g&&b==="progress"&&g.progress&&g.progress.apply(g,c)}else throw Error("Bad method: "+a.method);}else{var h=p[String(a.id)];delete p[String(a.id)];a.error?h.reject(a.error):h.resolve(a.result)}}catch(k){console.log("Plugin._messageHandler "+k)}}}var s=e,f=!1,v=null,o=0,r=0,w=0,z={},p={},i={},B={},Q=k;this.updateHeaders=function(a){if(f)throw Error("Cannot update headers. Plugin Provider is connected");
s=a};this.registerServiceProvider=this.registerService=function(a,b,c){if(f)throw Error("Cannot register service. Plugin Provider is connected");typeof a==="string"?a=[a]:Array.isArray(a)||(a=[]);var d=null,e=[];for(d in b)typeof b[d]==="function"&&e.push(d);B[w++]={names:a,methods:e,implementation:b,properties:c||{},listeners:{}}};this.connect=function(a,c){if(!f){if(typeof window==="undefined")v=self;else if(window!==window.parent)v=window.parent;else if(window.opener!==null)v=window.opener;else{c&&
c("No valid plugin target");return}addEventListener("message",b,!1);var d={method:"plugin",params:[h()]};k(d);f=!0}a&&a()};this.disconnect=function(){f&&(removeEventListener("message",b),v=null,f=!1)}}});
define("orion/editor/templates",[],function(){function a(a,d,h,c){this.prefix=a;this.description=d;this.template=h;this.name=c;this._parse()}function d(a,d){this._keywords=a||[];this._templates=[];this.addTemplates(d||[])}a.prototype={getProposal:function(a,d,h){var a=d-a.length,d={},c,l=h.delimiter!==void 0?h.delimiter:"\n";h.indentation&&(l+=h.indentation);for(var g=h.tab!==void 0?h.tab:"\t",q=0,j=this.variables,b=this.segments,h=[],s=0;s<b.length;s++){var f=b[s],v=j[f];if(v!==void 0)switch(f){case "${tab}":f=
g;break;case "${delimiter}":f=l;break;case "${cursor}":f="";c=q;break;default:var o=d[f];o||(o=d[f]={data:v.data,positions:[]});f=v.substitution;o.data&&o.data.values&&(f=o.data.values[0]);o.positions.push({offset:a+q,length:f.length})}h.push(f);q+=f.length}var l=[],r;for(r in d)d.hasOwnProperty(r)&&l.push(d[r]);h=h.join("");if(c===void 0)c=h.length;return{proposal:h,name:this.name,description:this.description,groups:l,escapePosition:a+c,style:"noemphasis"}},match:function(a){return this.prefix.indexOf(a)===
0},_parse:function(){var a=this.template,d=[],h={},c,l=0,a=a.replace(/\n/g,"${delimiter}"),a=a.replace(/\t/g,"${tab}");a.replace(/\$\{((?:[^\\}]+|\\.))*\}/g,function(g,q,j){var b=g.substring(2,g.length-1),q=g,s=b,f=null,v=s.indexOf(":");v!==-1&&(s=s.substring(0,v),q="${"+s+"}",f=JSON.parse(b.substring(v+1).replace("\\}","}").trim()));(b=h[q])||(b=h[q]={});b.substitution=s;if(f)b.data=f;(c=a.substring(l,j))&&d.push(c);d.push(q);l=j+g.length;return s});(c=a.substring(l,a.length))&&d.push(c);this.segments=
d;this.variables=h}};d.prototype={addTemplates:function(d){for(var k=this.getTemplates(),h=0;h<d.length;h++)k.push(new a(d[h].prefix,d[h].description,d[h].template,d[h].name))},computeProposals:function(a,d,h){var c=this.getPrefix(a,d,h),l=[];this.isValid(c,a,d,h)&&(l=l.concat(this.getTemplateProposals(c,d,h)),l=l.concat(this.getKeywordProposals(c)));return l},getKeywords:function(){return this._keywords},getKeywordProposals:function(a){var d=[],h=this.getKeywords();if(h){for(var c=0;c<h.length;c++)h[c].indexOf(a)===
0&&d.push({proposal:h[c].substring(a.length),description:h[c],style:"noemphasis_keyword"});0<d.length&&d.splice(0,0,{proposal:"",description:"Keywords",style:"noemphasis_title_keywords",unselectable:!0})}return d},getPrefix:function(a,d,h){return h.prefix},getTemplates:function(){return this._templates},getTemplateProposals:function(a,d,h){for(var c=[],l=this.getTemplates(),g=0;g<l.length;g++){var q=l[g];q.match(a)&&(q=q.getProposal(a,d,h),this.removePrefix(a,q),c.push(q))}0<c.length&&(c.sort(function(a,
b){return a.name<b.name?-1:a.name>b.name?1:0}),c.splice(0,0,{proposal:"",description:"Templates",style:"noemphasis_title",unselectable:!0}));return c},removePrefix:function(a,d){if(!(d.overwrite=d.proposal.substring(0,a.length)!==a))d.proposal=d.proposal.substring(a.length)},isValid:function(){return!0}};return{Template:a,TemplateContentAssist:d}});
define("orion/editor/stylers/lib/syntax",[],function(){return{id:"orion.lib",grammars:[{id:"orion.lib",patterns:[{include:"#brace_open"},{include:"#brace_close"},{include:"#bracket_open"},{include:"#bracket_close"},{include:"#parenthesis_open"},{include:"#parenthesis_close"},{include:"#number_decimal"},{include:"#number_hex"},{include:"#string_doubleQuote"},{include:"#string_singleQuote"}],repository:{brace_open:{match:"{",name:"punctuation.section.block.begin"},brace_close:{match:"}",name:"punctuation.section.block.end"},
bracket_open:{match:"\\[",name:"punctuation.section.bracket.begin"},bracket_close:{match:"\\]",name:"punctuation.section.bracket.end"},parenthesis_open:{match:"\\(",name:"punctuation.section.parens.begin"},parenthesis_close:{match:"\\)",name:"punctuation.section.parens.end"},doc_block:{begin:"/\\*\\*",end:"\\*/",name:"comment.block.documentation",patterns:[{match:"@(?:(?!\\*/)\\S)*",name:"keyword.other.documentation.tag"},{match:"\\<\\S*\\>",name:"keyword.other.documentation.markup"},{match:"(\\b)(TODO)(\\b)(((?!\\*/).)*)",
name:"meta.annotation.task.todo",captures:{2:{name:"keyword.other.documentation.task"},4:{name:"comment.block"}}}]},number_decimal:{match:"\\b-?(?:\\.\\d+|\\d+\\.?\\d*)(?:[eE][+-]?\\d+)?\\b",name:"constant.numeric.number"},number_hex:{match:"\\b0[xX][0-9A-Fa-f]+\\b",name:"constant.numeric.hex"},string_doubleQuote:{match:'"(?:\\\\.|[^"])*"?',name:"string.quoted.double"},string_singleQuote:{match:"'(?:\\\\.|[^'])*'?",name:"string.quoted.single"},todo_comment_singleLine:{match:"(\\b)(TODO)(\\b)(.*)",
name:"meta.annotation.task.todo",captures:{2:{name:"keyword.other.documentation.task"},4:{name:"comment.line"}}}}},{id:"orion.c-like",patterns:[{include:"orion.lib"},{include:"#comment_singleLine"},{include:"#comment_block"}],repository:{comment_singleLine:{match:"//.*",name:"comment.line.double-slash",patterns:[{include:"orion.lib#todo_comment_singleLine"}]},comment_block:{begin:"/\\*",end:"\\*/",name:"comment.block",patterns:[{match:"(\\b)(TODO)(\\b)(((?!\\*/).)*)",name:"meta.annotation.task.todo",
captures:{2:{name:"keyword.other.documentation.task"},4:{name:"comment.block"}}}]}}}],keywords:[]}});
define("orion/editor/stylers/application_javascript/syntax",["orion/editor/stylers/lib/syntax"],function(a){var d="break,case,class,catch,continue,const,debugger,default,delete,do,else,enum,export,extends,false,finally,for,function,if,implements,import,in,instanceof,interface,let,new,null,package,private,protected,public,return,static,super,switch,this,throw,true,try,typeof,undefined,var,void,while,with,yield".split(","),a=a.grammars;a.push({id:"orion.js",contentTypes:["application/javascript"],patterns:[{include:"orion.lib#doc_block"},
{include:"orion.c-like"},{match:"\\b(?:"+d.join("|")+")\\b",name:"keyword.control.js"},{match:"/(?![\\s])(?:\\\\.|[^/])+/(?:[gim]{0,3})",name:"string.regexp.js"},{begin:"'(?:\\\\.|[^\\\\'])*\\\\$",end:"^(?:$|(?:\\\\.|[^\\\\'])*('|[^\\\\]$))",name:"string.quoted.single.js"},{begin:'"(?:\\\\.|[^\\\\"])*\\\\$',end:'^(?:$|(?:\\\\.|[^\\\\"])*("|[^\\\\]$))',name:"string.quoted.double.js"}]});return{id:a[a.length-1].id,grammars:a,keywords:d}});
define("orion/editor/jsTemplateContentAssist",["orion/editor/templates","orion/editor/stylers/application_javascript/syntax"],function(a,d){function e(){}var k=[{prefix:"if",name:"if",description:" - if statement",template:"if (${condition}) {\n\t${cursor}\n}"},{prefix:"if",name:"if",description:" - if else statement",template:"if (${condition}) {\n\t${cursor}\n} else {\n\t\n}"},{prefix:"for",name:"for",description:" - iterate over array",template:"for (var ${i}=0; ${i}<${array}.length; ${i}++) {\n\t${cursor}\n}"},
{prefix:"for",name:"for",description:" - iterate over array with local var",template:"for (var ${i}=0; ${i}<${array}.length; ${i}++) {\n\tvar ${value} = ${array}[${i}];\n\t${cursor}\n}"},{prefix:"for",name:"for..in",description:" - iterate over properties of an object",template:"for (var ${property} in ${object}) {\n\tif (${object}.hasOwnProperty(${property})) {\n\t\t${cursor}\n\t}\n}"},{prefix:"while",name:"while",description:" - while loop with condition",template:"while (${condition}) {\n\t${cursor}\n}"},
{prefix:"do",name:"do",description:" - do while loop with condition",template:"do {\n\t${cursor}\n} while (${condition});"},{prefix:"switch",name:"switch",description:" - switch case statement",template:"switch (${expression}) {\n\tcase ${value1}:\n\t\t${cursor}\n\t\tbreak;\n\tdefault:\n}"},{prefix:"case",name:"case",description:" - case statement",template:"case ${value}:\n\t${cursor}\n\tbreak;"},{prefix:"try",name:"try",description:" - try..catch statement",template:"try {\n\t${cursor}\n} catch (${err}) {\n}"},
{prefix:"try",name:"try",description:" - try..catch statement with finally block",template:"try {\n\t${cursor}\n} catch (${err}) {\n} finally {\n}"},{prefix:"typeof",name:"typeof",description:" - typeof statement",template:'typeof ${object} === "${type:'+JSON.stringify({type:"link",values:"undefined,object,boolean,number,string,function,xml".split(",")}).replace("}","\\}")+'}"'},{prefix:"instanceof",name:"instanceof",description:" - instanceof statement",template:"${object} instanceof ${type}"},{prefix:"with",
name:"with",description:" - with statement",template:"with (${object}) {\n\t${cursor}\n}"},{prefix:"function",name:"function",description:" - function declaration",template:"/**\n * @name ${name}\n * @param ${parameter}\n */\nfunction ${name} (${parameter}) {\n\t${cursor}\n}"},{prefix:"function",name:"function",description:" - function expression",template:"/**\n * @name ${name}\n * @function\n * @param ${parameter}\n */\n${name}: function(${parameter}) {\n\t${cursor}\n}"},{prefix:"define",name:"define",
description:" - define function call",template:"/* global define */\ndefine('${name}',[\n'${import}'\n], function(${importname}) {\n\t${cursor}\n});"},{prefix:"nls",name:"nls",description:" - non NLS string",template:"${cursor} //$NON-NLS-${0}$"},{prefix:"log",name:"log",description:" - console log",template:"console.log(${object});"},{prefix:"mongodb",name:"mongodb",description:" - Node.js require statement for MongoDB",template:"var ${name} = require('mongodb');\n"},{prefix:"mongodb",name:"mongodb client",
description:" - create a new MongoDB client",template:"var MongoClient = require('mongodb').MongoClient;\nvar Server = require('mongodb').Server;\n${cursor}"},{prefix:"mongodb",name:"mongodb open",description:" - create a new MongoDB client and open a connection",template:"var MongoClient = require('mongodb').MongoClient;\nvar Server = require('mongodb').Server;\nvar ${client} = new MongoClient(new Server(${host}, ${port}));\ntry {\n\t${client}.open(function(error, ${client}) {\n\t\tvar ${db} = ${client}.db(${name});\n\t\t${cursor}\n\t});\n} finally {\n\t${client}.close();\n};"},
{prefix:"mongodb",name:"mongodb connect",description:" - connect to an existing MongoDB database",template:"var MongoClient = require('mongodb').MongoClient;\nMongoClient.connect(${url}, function(error, db) {\n\t${cursor}\n});\n"},{prefix:"mongodb",name:"mongodb connect (Cloud Foundry)",description:" - connect to an existing MongoDB database using Cloud Foundry",template:"if (${process}.env.VCAP_SERVICES) {\n\tvar env = JSON.parse(${process}.env.VCAP_SERVICES);\n\tvar mongo = env['${mongo-version}'][0].credentials;\n} else {\n\tvar mongo = {\n\t\tusername : 'username',\n\t\tpassword : 'password',\n\t\turl : 'mongodb://username:password@localhost:27017/database'\n\t};\n}\nvar MongoClient = require('mongodb').MongoClient;\nMongoClient.connect(mongo.url, function(error, db) {\n\t${cursor}\n});\n"},
{prefix:"mongodb",name:"mongodb collection",description:" - create a MongoDB database collection",template:"${db}.collection(${id}, function(${error}, collection) {\n\t${cursor}\n});"},{prefix:"mongodb",name:"mongodb strict collection",description:" - create a MongoDB database strict collection",template:"${db}.collection(${id}, {strict:true}, function(${error}, collection) {\n\t${cursor}\n});"},{prefix:"redis",name:"redis",description:" - Node.js require statement for Redis",template:"var ${name} = require('redis');\n"},
{prefix:"redis",name:"redis client",description:" - create a new Redis client",template:"var ${name} = require('redis');\nvar ${client} = ${name}.createClient(${port}, ${host}, ${options});\n"},{prefix:"redis",name:"redis connect",description:" - create a new Redis client and connect",template:"var ${name} = require('redis');\nvar ${client} = ${name}.createClient(${port}, ${host}, ${options});\ntry {\n\t${cursor}\n} finally {\n\t${client}.close();\n}\n"},{prefix:"redis",name:"redis set",description:" - create a new Redis client set call",
template:"client.set(${key}, ${value});\n"},{prefix:"redis",name:"redis get",description:" - create a new Redis client get call",template:"client.get(${key}, function(${error}, ${reply}) {\n\t${cursor}\n});\n"},{prefix:"redis",name:"redis on",description:" - create a new Redis client event handler",template:"client.on(${event}, function(${arg}) {\n\t${cursor}});\n"},{prefix:"pg",name:"postgres",description:" - Node.js require statement for Postgres DB",template:"var pg = require('pg');\n"},{prefix:"pg",
name:"postgres client",description:" - create a new Postgres DB client",template:"var pg = require('pg');\nvar url = \"postgres://postgres:${port}@${host}/${database}\";\nvar ${client} = new pg.Client(url);\n"},{prefix:"pg",name:"postgres connect",description:" - create a new Postgres DB client and connect",template:"var pg = require('pg');\nvar url = \"postgres://postgres:${port}@${host}/${database}\";\nvar ${client} = new pg.Client(url);\n${client}.connect(function(error) {\n\t${cursor}\n});\n"},
{prefix:"pg",name:"postgres query",description:" - create a new Postgres DB query statement",template:"${client}.query(${sql}, function(error, result) {\n\t${cursor}\n});\n"},{prefix:"mysql",name:"mysql",description:" - Node.js require statement for MySQL DB",template:"var mysql = require('mysql');\n"},{prefix:"mysql",name:"mysql connection",description:" - create a new MySQL DB connection",template:"var mysql = require('mysql');\nvar ${connection} = mysql.createConnection({\n\thost : ${host},\n\tuser : ${username},\n\tpassword : ${password}\n});\ntry {\n\t${connection}.connect();\n\t${cursor}\n} finally {\n\t${connection}.end();\n}"},
{prefix:"mysql",name:"mysql query",description:" - create a new MySQL DB query statement",template:"${connection}.query(${sql}, function(error, rows, fields) {\n\t${cursor}\n});\n"},{prefix:"express",name:"express",description:" - Node.js require statement for Express",template:"var ${name} = require('express');"},{prefix:"express",name:"express app",description:" - create a new Express app",template:"var express = require('express');\nvar ${app} = express();\n${cursor}\napp.listen(${timeout});\n"},
{prefix:"express",name:"express configure",description:" - create an Express app configure statement",template:"app.configure(function() {\n\tapp.set(${id}, ${value});\n});"},{prefix:"express",name:"express specific configure",description:" - create a specific Express app configure statement",template:"app.configure(${name}, function() {\n\tapp.set(${id}, ${value});\n});"},{prefix:"express",name:"express app get",description:" - create a new Express app.get call",template:"var value = app.get(${id}, function(request, result){\n\t${cursor}\n});\n"},
{prefix:"express",name:"express app set",description:" - create a new Express app set call",template:"app.set(${id}, ${value});\n"},{prefix:"express",name:"express app use",description:" - create a new Express app use statement",template:"app.use(${fnOrObject});\n"},{prefix:"express",name:"express app engine",description:" - create a new Express app engine statement",template:"app.engine(${fnOrObject});\n"},{prefix:"express",name:"express app param",description:" - create a new Express app param statement",
template:"app.param(${id}, ${value});\n"},{prefix:"express",name:"express app error use",description:" - create a new Express app error handling use statement",template:"app.use(function(error, request, result, next) {\n\tresult.send(${code}, ${message});\n});\n"},{prefix:"amqp",name:"amqp",description:" - Node.js require statement for AMQP framework",template:"var amqp = require('amqp');\n"},{prefix:"amqp",name:"amqp connection",description:" - create a new AMQP connection ",template:"var amqp = require('amqp');\nvar ${connection} = amqp.createConnection({\n\thost: ${host},\n\tport: ${port},\n\tlogin: ${login},\n\tpassword: ${password}\n});\n"},
{prefix:"amqp",name:"amqp on",description:" - create a new AMQP connection on statement",template:"${connection}.on(${event}, function() {\n\t${cursor}\n});\n"},{prefix:"amqp",name:"amqp queue",description:" - create a new AMQP connection queue statement",template:"${connection}.queue(${id}, function(queue) {\n\tqueue.bind('#'); //catch all messages\n\tqueue.subscribe(function (message, headers, deliveryInfo) {\n\t\t// Receive messages\n\t});\n\t${cursor}\n});\n"},{prefix:"amqp",name:"amqp exchange",
description:" - create a new AMQP connection exchange",template:"var exchange = ${connection}.exchange(${id}, {type: 'topic'}, function(exchange) {\n\t${cursor}\n});\n"}];e.prototype=new a.TemplateContentAssist(d.keywords,k);e.prototype.isValid=function(a,c,d){a=c.charAt(d-a.length-1);return!a||":!@#$^&*.?<>".indexOf(a)===-1};return{JSTemplateContentAssistProvider:e}});
define("orion/editor/stylers/application_json/syntax",["orion/editor/stylers/lib/syntax"],function(a){var d=["false","true"],a=a.grammars;a.push({id:"orion.json",contentTypes:["application/json"],patterns:[{include:"orion.lib"},{match:"\\b(?:"+d.join("|")+")\\b",name:"keyword.control.json"}]});return{id:a[a.length-1].id,grammars:a,keywords:d}});
define("orion/editor/stylers/application_schema_json/syntax",["orion/editor/stylers/application_json/syntax"],function(a){var d="additionalItems,additionalProperties,allOf,anyOf,default,definitions,dependencies,description,enum,exclusiveMaximum,exclusiveMinimum,format,id,maximum,maxItems,maxLength,maxProperties,minimum,minItems,minLength,minProperties,multipleOf,not,oneOf,patternProperties,pattern,properties,required,title,type,uniqueItems".split(","),a=a.grammars;a.push({id:"orion.json.schema",contentTypes:["application/schema+json"],
patterns:[{include:"orion.json"},{match:"(?:\\$schema|(?:\\b(?:"+d.join("|")+")))\\b",name:"keyword.control.schema.json"}]});return{id:a[a.length-1].id,grammars:a,keywords:d}});
define("orion/editor/stylers/application_xml/syntax",["orion/editor/stylers/lib/syntax"],function(a){a=a.grammars;a.push({id:"orion.xml",contentTypes:["application/xml","application/xhtml+xml"],patterns:[{include:"#comment"},{include:"#doctype"},{include:"#xmlDeclaration"},{begin:"</?[A-Za-z0-9]+",end:"/?>",captures:{0:{name:"entity.name.tag.xml"}},name:"meta.tag.xml",patterns:[{include:"#comment"},{include:"orion.lib#string_doubleQuote"},{include:"orion.lib#string_singleQuote"}]},{match:"&lt;|&gt;|&amp;",
name:"constant.character"}],repository:{comment:{begin:"<\!--",end:"--\>",name:"comment.block.xml",patterns:[{match:"(\\b)(TODO)(\\b)(((?!--\>).)*)",name:"meta.annotation.task.todo",captures:{2:{name:"keyword.other.documentation.task"},4:{name:"comment.line"}}}]},doctype:{begin:"<!(?:doctype|DOCTYPE)",end:">",name:"meta.tag.doctype.xml",captures:{0:{name:"entity.name.tag.doctype.xml"}},patterns:[{include:"#comment"},{include:"orion.lib#string_doubleQuote"},{include:"orion.lib#string_singleQuote"}]},
xmlDeclaration:{begin:"<\\?xml",end:"\\?>",captures:{0:{name:"entity.name.tag.declaration.xml"}},patterns:[{include:"#comment"},{include:"orion.lib#string_doubleQuote"},{include:"orion.lib#string_singleQuote"}],name:"meta.tag.declaration.xml"}}});return{id:a[a.length-1].id,grammars:a,keywords:[]}});
define("orion/editor/stylers/application_x-ejs/syntax",["orion/editor/stylers/lib/syntax","orion/editor/stylers/application_javascript/syntax","orion/editor/stylers/application_xml/syntax"],function(a,d,e){a=a.grammars.concat(d.grammars).concat(e.grammars);a.push({id:"orion.ejs",contentTypes:["application/x-ejs"],patterns:[{include:"orion.xml"},{begin:"<%=?(?:\\s|$)",end:"%>",captures:{0:{name:"entity.name.declaration.js"}},contentName:"source.js.embedded.ejs",patterns:[{include:"orion.js"}]}],repository:{doctype:{},
xmlDeclaration:{}}});return{id:a[a.length-1].id,grammars:a,keywords:[]}});
define('built-javascriptPlugin.js',"javascript/astManager,javascript/contentAssist/indexFiles/mongodbIndex,javascript/contentAssist/indexFiles/mysqlIndex,javascript/contentAssist/indexFiles/postgresIndex,javascript/contentAssist/indexFiles/redisIndex,javascript/contentAssist/indexFiles/expressIndex,javascript/contentAssist/indexFiles/amqpIndex,javascript/contentAssist/contentAssist,javascript/contentAssist/indexer,javascript/eslint/validator,javascript/occurrences,javascript/outliner,orion/i18nUtil,orion/plugin,orion/editor/jsTemplateContentAssist,orion/editor/stylers/application_javascript/syntax,orion/editor/stylers/application_json/syntax,orion/editor/stylers/application_schema_json/syntax,orion/editor/stylers/application_x-ejs/syntax".split(","),function(a,
d,e,k,h,c,l,g,q,j,b,s,f,v,o,r,w,z,p){var i=new v({name:"Orion JavaScript Tool Support",version:"1.0",description:"This plugin provides JavaScript tools support for Orion, like editing, search, navigation, validation, and code completion."});i.registerServiceProvider("orion.core.contenttype",{},{contentTypes:[{id:"application/javascript","extends":"text/plain",name:"JavaScript",extension:["js"],imageClass:"file-sprite-javascript modelDecorationSprite"},{id:"application/json","extends":"text/plain",
name:"JSON",extension:["json"],imageClass:"file-sprite-javascript modelDecorationSprite"},{id:"application/x-ejs","extends":"text/plain",name:"Embedded Javascript",extension:["ejs"],imageClass:"file-sprite-javascript modelDecorationSprite"}]});a=new a.ASTManager;i.registerServiceProvider("orion.edit.model",{onModelChanging:a.updated.bind(a)},{contentType:["application/javascript"],types:["ModelChanging"]});i.registerServiceProvider("orion.edit.outliner",new s.JSOutliner(a),{contentType:["application/javascript"],
name:"Source Outline",title:"JavaScript source outline",id:"orion.javascript.outliner.source"});i.registerService("orion.edit.occurrences",new b.JavaScriptOccurrences(a),{contentType:["application/javascript"]});i.registerService("orion.edit.contentassist",new o.JSTemplateContentAssistProvider,{name:"JavaScript content assist",contentType:["application/javascript"]});i.registerServiceProvider("orion.edit.contentassist",new g.JSContentAssist(a,new q),{contentType:["application/javascript"],name:"JavaScript content assist",
id:"orion.edit.contentassist.javascript",charTriggers:"[.]",excludedStyles:"(comment.*|string.*)"});i.registerServiceProvider(["orion.edit.validator","orion.cm.managedservice"],new j(a),{contentType:["application/javascript"],pid:"eslint.config"});i.registerService("orion.core.setting",{},{settings:[{pid:"eslint.config",name:"ESLint Validator",tags:"validation javascript js eslint".split(" "),category:"validation",properties:[{id:"validate_eqeqeq",name:"Discouraged '==' use",type:"number",defaultValue:1,
options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_func_decl",name:"No JSDoc on function declarations",type:"number",defaultValue:0,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_func_expr",name:"No JSDoc on function expressions",type:"number",defaultValue:0,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_use_before_define",name:"Member used before definition",
type:"number",defaultValue:1,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_missing_semi",name:"Missing semicolons",type:"number",defaultValue:1,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_no_undef",name:"Undefined member use",type:"number",defaultValue:2,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_unnecessary_semi",name:"Unnecessary semicolons",
type:"number",defaultValue:1,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_no_unused_vars",name:"Unused variables",type:"number",defaultValue:1,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]},{id:"validate_no_redeclare",name:"Variable re-declarations",type:"number",defaultValue:1,options:[{label:"Ignore",value:0},{label:"Warning",value:1},{label:"Error",value:2}]}]}]});r.grammars.concat(w.grammars).concat(z.grammars).concat(p.grammars).forEach(function(a){i.registerServiceProvider("orion.edit.highlighter",
{},a)}.bind(this));i.registerServiceProvider("orion.core.typedef",{},{id:"node.redis",type:"tern",defs:h});i.registerServiceProvider("orion.core.typedef",{},{id:"node.mysql",type:"tern",defs:e});i.registerServiceProvider("orion.core.typedef",{},{id:"node.postgres",type:"tern",defs:k});i.registerServiceProvider("orion.core.typedef",{},{id:"node.mongodb",type:"tern",defs:d});i.registerServiceProvider("orion.core.typedef",{},{id:"node.express",type:"tern",defs:c});i.registerServiceProvider("orion.core.typedef",
{},{id:"node.amqp",type:"tern",defs:l});i.connect()});