From 0518b5242b0552cf456bcbb6e6fd959d34c683dd Mon Sep 17 00:00:00 2001 From: dolby Date: Wed, 22 Aug 2012 12:15:46 -0400 Subject: [PATCH] more JS stuff --- com.ibm.wala.cast.java.jdt.test/.classpath | 1 + .../META-INF/MANIFEST.MF | 1 + .../data/Java60RegressionExclusions.txt | 11 + .../launchers/JDTJava15IRTests.launch | 10 +- .../launchers/JDTJavaIRTests.launch | 10 +- .../demandpa/driver/DemandCastChecker.java | 305 + .../testdata/test_project.zip | Bin 0 -> 298222 bytes com.ibm.wala.cast.js.test.data/.project | 28 + .../.settings/.jsdtscope | 7 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .../org.eclipse.wst.jsdt.ui.superType.name | 1 + .../META-INF/MANIFEST.MF | 9 + .../examples-src/pages/2.js | 63 + .../examples-src/pages/apollo-example.html | 27 + .../examples-src/pages/collection.js | 14 + .../examples-src/pages/crawl.html | 196 + .../examples-src/pages/crawl/15.js | 4 + .../examples-src/pages/crawl/16.js | 4 + .../examples-src/pages/crawl/17.js | 4 + .../examples-src/pages/crawl/page11.html | 25 + .../examples-src/pages/crawl/page11b.html | 25 + .../examples-src/pages/crawl/page12.html | 31 + .../examples-src/pages/crawl/page13.html | 32 + .../examples-src/pages/crawl/page15.html | 8 + .../examples-src/pages/crawl/page16.html | 8 + .../examples-src/pages/crawl/page17.html | 37 + .../examples-src/pages/iframeTest2.html | 23 + .../examples-src/pages/jquery.html | 263 + .../examples-src/pages/jquery/ex1.html | 16 + .../examples-src/pages/jquery_hacked.html | 288 + .../examples-src/pages/list.html | 37 + .../examples-src/pages/nojs.html | 17 + .../examples-src/pages/page1.html | 19 + .../examples-src/pages/page2.html | 29 + .../examples-src/pages/page3.html | 8 + .../examples-src/pages/page4.html | 32 + .../examples-src/pages/windowx.html | 33 + .../examples-src/tests/214631.js | 17 + .../tests/Function_is_a_function.js | 1 + .../examples-src/tests/args.js | 28 + .../examples-src/tests/arguments.js | 22 + .../examples-src/tests/badforin.js | 33 + .../examples-src/tests/badforin2.js | 37 + .../examples-src/tests/badforin3.js | 21 + .../examples-src/tests/calls.js | 1 + .../examples-src/tests/complex_call.js | 18 + .../examples-src/tests/control-flow.js | 91 + .../examples-src/tests/crash1.js | 1 + .../examples-src/tests/crash2.js | 7 + .../examples-src/tests/dead_phi.js | 12 + .../examples-src/tests/dispatch.js | 33 + .../examples-src/tests/extjs_switch.js | 11 + .../examples-src/tests/forin.js | 14 + .../examples-src/tests/function_apply.js | 18 + .../examples-src/tests/function_apply2.js | 9 + .../examples-src/tests/function_call.js | 12 + .../examples-src/tests/functions.js | 16 + .../examples-src/tests/global_object.js | 5 + .../examples-src/tests/global_object2.js | 3 + .../examples-src/tests/inherit.js | 45 + .../examples-src/tests/instanceof.js | 5 + .../examples-src/tests/jquery_spec_test.js | 5588 +++++++++++++++++ .../examples-src/tests/lexical-ctor.js | 58 + .../examples-src/tests/lexical_broken.js | 12 + .../tests/lexical_multiple_calls.js | 23 + .../examples-src/tests/more-control-flow.js | 115 + .../examples-src/tests/multivar.js | 20 + .../examples-src/tests/nested.js | 11 + .../tests/nested_assign_to_param.js | 10 + .../examples-src/tests/newfn.js | 12 + .../examples-src/tests/objects.js | 50 + .../examples-src/tests/place_phi_npe.js | 9 + .../tests/portal-example-simple.html | 389 ++ .../tests/prototype_contamination_bug.js | 28 + .../examples-src/tests/recursive_lexical.js | 10 + .../examples-src/tests/repr.js | 42 + .../examples-src/tests/return_this.js | 6 + .../examples-src/tests/return_this2.js | 15 + .../rewrite_does_not_change_lables_bug.js | 7 + .../examples-src/tests/rhino_crash1.js | 6 + .../examples-src/tests/rhino_crash2.js | 4 + .../examples-src/tests/rhino_crash3.js | 10 + .../examples-src/tests/scoping_test.js | 13 + .../examples-src/tests/simple-lexical.js | 114 + .../examples-src/tests/simple.js | 96 + .../examples-src/tests/simpler.js | 87 + .../tests/stack_overflow_on_ssa_conversion.js | 1602 +++++ .../examples-src/tests/string-op.js | 13 + .../examples-src/tests/string-prims.js | 9 + .../examples-src/tests/try.js | 76 + .../examples-src/tests/upward.js | 17 + .../examples-src/tests/with.js | 8 + .../examples-src/tests/wrap1.js | 15 + .../examples-src/tests/wrap2.js | 15 + .../examples-src/tests/wrap3.js | 24 + .../cast/js/test/JavaScriptTestPlugin.java | 85 - .../cast/ipa/callgraph/CAstAnalysisScope.java | 3 + com.ibm.wala.ide.jdt/.classpath | 7 + com.ibm.wala.ide.jdt/.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 7 + .../util/JavaScriptEclipseProjectPath.java | 8 +- com.ibm.wala.ide.tests/META-INF/MANIFEST.MF | 1 + .../launchers/JSProjectScopeTest.launch | 43 + .../src/com/ibm/wala/ide/test/Activator.java | 89 + .../ibm/wala/ide/test/JSProjectScopeTest.java | 6 +- .../testdata/test_js_project.zip | Bin 0 -> 91720 bytes .../ibm/wala/ide/util/EclipseProjectPath.java | 12 +- 107 files changed, 10787 insertions(+), 103 deletions(-) create mode 100644 com.ibm.wala.cast.java.jdt.test/data/Java60RegressionExclusions.txt create mode 100644 com.ibm.wala.cast.java.jdt.test/source/com/ibm/wala/demandpa/driver/DemandCastChecker.java create mode 100644 com.ibm.wala.cast.java.jdt.test/testdata/test_project.zip create mode 100644 com.ibm.wala.cast.js.test.data/.project create mode 100644 com.ibm.wala.cast.js.test.data/.settings/.jsdtscope create mode 100644 com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 com.ibm.wala.cast.js.test.data/META-INF/MANIFEST.MF create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/2.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/apollo-example.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/collection.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/15.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/16.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/17.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11b.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page12.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page13.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page15.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page16.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page17.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/iframeTest2.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/jquery.html create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/pages/jquery/ex1.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/jquery_hacked.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/list.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/nojs.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/page1.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/page2.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/page3.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/page4.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/pages/windowx.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/Function_is_a_function.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/args.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/arguments.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/badforin.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/badforin2.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/badforin3.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/calls.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/complex_call.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/control-flow.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/crash1.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/crash2.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/dead_phi.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/dispatch.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/extjs_switch.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/forin.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply2.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/function_call.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/functions.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/global_object.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/global_object2.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/inherit.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/instanceof.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/jquery_spec_test.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/lexical-ctor.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_broken.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_multiple_calls.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/more-control-flow.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/multivar.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/nested.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/nested_assign_to_param.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/newfn.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/objects.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/place_phi_npe.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/portal-example-simple.html create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/prototype_contamination_bug.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/recursive_lexical.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/repr.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/return_this.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/return_this2.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/rewrite_does_not_change_lables_bug.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash1.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash2.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash3.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/scoping_test.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/simple-lexical.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/simple.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/simpler.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/stack_overflow_on_ssa_conversion.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/string-op.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/string-prims.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/try.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/upward.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/with.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/wrap1.js create mode 100755 com.ibm.wala.cast.js.test.data/examples-src/tests/wrap2.js create mode 100644 com.ibm.wala.cast.js.test.data/examples-src/tests/wrap3.js delete mode 100755 com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/JavaScriptTestPlugin.java create mode 100644 com.ibm.wala.ide.jdt/.classpath create mode 100644 com.ibm.wala.ide.jdt/.project create mode 100644 com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs create mode 100644 com.ibm.wala.ide.tests/launchers/JSProjectScopeTest.launch create mode 100644 com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/Activator.java create mode 100644 com.ibm.wala.ide.tests/testdata/test_js_project.zip diff --git a/com.ibm.wala.cast.java.jdt.test/.classpath b/com.ibm.wala.cast.java.jdt.test/.classpath index d154f35ab..3afaa84d1 100644 --- a/com.ibm.wala.cast.java.jdt.test/.classpath +++ b/com.ibm.wala.cast.java.jdt.test/.classpath @@ -3,5 +3,6 @@ + diff --git a/com.ibm.wala.cast.java.jdt.test/META-INF/MANIFEST.MF b/com.ibm.wala.cast.java.jdt.test/META-INF/MANIFEST.MF index 005495003..9f25a2f3f 100644 --- a/com.ibm.wala.cast.java.jdt.test/META-INF/MANIFEST.MF +++ b/com.ibm.wala.cast.java.jdt.test/META-INF/MANIFEST.MF @@ -14,6 +14,7 @@ Require-Bundle: com.ibm.wala.cast.java.test;bundle-version="1.0.0", com.ibm.wala.cast;bundle-version="1.0.0", com.ibm.wala.ide;bundle-version="1.1.3", com.ibm.wala.core;bundle-version="1.1.3", + com.ibm.wala.util;bundle-version="1.1.3", org.eclipse.core.resources;bundle-version="3.4.1", org.eclipse.jdt.core;bundle-version="3.4.2", org.junit4;bundle-version="4.8.1", diff --git a/com.ibm.wala.cast.java.jdt.test/data/Java60RegressionExclusions.txt b/com.ibm.wala.cast.java.jdt.test/data/Java60RegressionExclusions.txt new file mode 100644 index 000000000..a621d345d --- /dev/null +++ b/com.ibm.wala.cast.java.jdt.test/data/Java60RegressionExclusions.txt @@ -0,0 +1,11 @@ +java\/awt\/.* +javax\/swing\/.* +sun\/awt\/.* +sun\/swing\/.* +com\/sun\/.* +sun\/.* +org\/netbeans\/.* +org\/openide\/.* +com\/ibm\/crypto\/.* +com\/ibm\/security\/.* +org\/apache\/xerces\/.* diff --git a/com.ibm.wala.cast.java.jdt.test/launchers/JDTJava15IRTests.launch b/com.ibm.wala.cast.java.jdt.test/launchers/JDTJava15IRTests.launch index e06adea7d..3550f6efc 100644 --- a/com.ibm.wala.cast.java.jdt.test/launchers/JDTJava15IRTests.launch +++ b/com.ibm.wala.cast.java.jdt.test/launchers/JDTJava15IRTests.launch @@ -11,8 +11,8 @@ - - + + @@ -30,12 +30,12 @@ - + - - + + diff --git a/com.ibm.wala.cast.java.jdt.test/launchers/JDTJavaIRTests.launch b/com.ibm.wala.cast.java.jdt.test/launchers/JDTJavaIRTests.launch index 3856e14ba..de7b442a2 100644 --- a/com.ibm.wala.cast.java.jdt.test/launchers/JDTJavaIRTests.launch +++ b/com.ibm.wala.cast.java.jdt.test/launchers/JDTJavaIRTests.launch @@ -11,8 +11,8 @@ - - + + @@ -30,12 +30,12 @@ - + - - + + diff --git a/com.ibm.wala.cast.java.jdt.test/source/com/ibm/wala/demandpa/driver/DemandCastChecker.java b/com.ibm.wala.cast.java.jdt.test/source/com/ibm/wala/demandpa/driver/DemandCastChecker.java new file mode 100644 index 000000000..88bbc6078 --- /dev/null +++ b/com.ibm.wala.cast.java.jdt.test/source/com/ibm/wala/demandpa/driver/DemandCastChecker.java @@ -0,0 +1,305 @@ +/** + * Refinement Analysis Tools is Copyright (c) 2007 The Regents of the + * University of California (Regents). Provided that this notice and + * the following two paragraphs are included in any distribution of + * Refinement Analysis Tools or its derivative work, Regents agrees + * not to assert any of Regents' copyright rights in Refinement + * Analysis Tools against recipient for recipient's reproduction, + * preparation of derivative works, public display, public + * performance, distribution or sublicensing of Refinement Analysis + * Tools and derivative works, in source code and object code form. + * This agreement not to assert does not confer, by implication, + * estoppel, or otherwise any license or rights in any intellectual + * property of Regents, including, but not limited to, any patents + * of Regents or Regents' employees. + * + * IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, + * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + * INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE + * AND ITS DOCUMENTATION, EVEN IF REGENTS HAS BEEN ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE AND FURTHER DISCLAIMS ANY STATUTORY + * WARRANTY OF NON-INFRINGEMENT. THE SOFTWARE AND ACCOMPANYING + * DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ +package com.ibm.wala.demandpa.driver; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; + +import org.eclipse.core.runtime.NullProgressMonitor; + +import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil; +import com.ibm.wala.core.tests.util.TestConstants; +import com.ibm.wala.demandpa.alg.ContextSensitiveStateMachine; +import com.ibm.wala.demandpa.alg.DemandRefinementPointsTo; +import com.ibm.wala.demandpa.alg.DemandRefinementPointsTo.PointsToResult; +import com.ibm.wala.demandpa.alg.refinepolicy.FieldRefinePolicy; +import com.ibm.wala.demandpa.alg.refinepolicy.ManualFieldPolicy; +import com.ibm.wala.demandpa.alg.refinepolicy.ManualRefinementPolicy; +import com.ibm.wala.demandpa.alg.refinepolicy.RefinementPolicyFactory; +import com.ibm.wala.demandpa.alg.refinepolicy.TunedRefinementPolicy; +import com.ibm.wala.demandpa.alg.statemachine.StateMachineFactory; +import com.ibm.wala.demandpa.flowgraph.IFlowLabel; +import com.ibm.wala.demandpa.util.MemoryAccessMap; +import com.ibm.wala.demandpa.util.SimpleMemoryAccessMap; +import com.ibm.wala.ipa.callgraph.AnalysisCache; +import com.ibm.wala.ipa.callgraph.AnalysisOptions; +import com.ibm.wala.ipa.callgraph.AnalysisScope; +import com.ibm.wala.ipa.callgraph.CGNode; +import com.ibm.wala.ipa.callgraph.CallGraph; +import com.ibm.wala.ipa.callgraph.CallGraphBuilder; +import com.ibm.wala.ipa.callgraph.CallGraphBuilderCancelException; +import com.ibm.wala.ipa.callgraph.CallGraphStats; +import com.ibm.wala.ipa.callgraph.Entrypoint; +import com.ibm.wala.ipa.callgraph.impl.Util; +import com.ibm.wala.ipa.callgraph.propagation.HeapModel; +import com.ibm.wala.ipa.callgraph.propagation.InstanceKey; +import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis; +import com.ibm.wala.ipa.callgraph.propagation.PointerKey; +import com.ibm.wala.ipa.cha.ClassHierarchy; +import com.ibm.wala.ipa.cha.ClassHierarchyException; +import com.ibm.wala.ipa.cha.IClassHierarchy; +import com.ibm.wala.properties.WalaProperties; +import com.ibm.wala.ssa.IR; +import com.ibm.wala.ssa.SSACheckCastInstruction; +import com.ibm.wala.ssa.SSAInstruction; +import com.ibm.wala.types.ClassLoaderReference; +import com.ibm.wala.types.TypeReference; +import com.ibm.wala.util.CancelException; +import com.ibm.wala.util.Predicate; +import com.ibm.wala.ide.util.ProgressMaster; +import com.ibm.wala.ide.util.ProgressMonitorDelegate; +import com.ibm.wala.util.WalaException; +import com.ibm.wala.util.collections.Pair; +import com.ibm.wala.util.debug.Assertions; + +/** + * Uses a demand-driven points-to analysis to check the safety of downcasts. + * + * @author Manu Sridharan + * + */ +public class DemandCastChecker { + + // maximum number of casts to check + private static final int MAX_CASTS = Integer.MAX_VALUE; + + /** + * @param args + * @throws CancelException + * @throws IllegalArgumentException + * @throws IOException + */ + public static void main(String[] args) throws IllegalArgumentException, CancelException, IOException { + try { + Properties p = new Properties(); + p.putAll(WalaProperties.loadProperties()); + } catch (WalaException e) { + e.printStackTrace(); + Assertions.UNREACHABLE(); + } + + runTestCase(TestConstants.JLEX_MAIN, TestConstants.JLEX, "JLex"); + // runTestCase(TestConstants.HELLO_MAIN, TestConstants.HELLO, "Hello"); + + } + + public static void runTestCase(String mainClass, String scopeFile, String benchName) throws IllegalArgumentException, + CancelException, IOException { + System.err.println("=====BENCHMARK " + benchName + "====="); + System.err.println("analyzing " + benchName); + DemandRefinementPointsTo dmp = null; + try { + dmp = makeDemandPointerAnalysis(scopeFile, mainClass, benchName); + findFailingCasts(dmp.getBaseCallGraph(), dmp); + } catch (ClassHierarchyException e) { + e.printStackTrace(); + } + System.err.println("=*=*=*=*=*=*=*=*=*=*=*=*=*=*"); + System.err.println(""); + System.err.println(""); + } + + private static DemandRefinementPointsTo makeDemandPointerAnalysis(String scopeFile, String mainClass, String benchName) + throws ClassHierarchyException, IllegalArgumentException, CancelException, IOException { + AnalysisScope scope = CallGraphTestUtil.makeJ2SEAnalysisScope(scopeFile, getExclusions(benchName)); + // build a type hierarchy + ClassHierarchy cha = ClassHierarchy.make(scope); + + // set up call graph construction options; mainly what should be considered + // entrypoints? + Iterable entrypoints = com.ibm.wala.ipa.callgraph.impl.Util.makeMainEntrypoints(scope, cha, mainClass); + AnalysisOptions options = CallGraphTestUtil.makeAnalysisOptions(scope, entrypoints); + + System.err.print("constructing call graph..."); + final Pair cgAndPA = buildCallGraph(scope, cha, options); + CallGraph cg = cgAndPA.fst; + System.err.println("done"); + System.err.println(CallGraphStats.getStats(cg)); + MemoryAccessMap fam = new SimpleMemoryAccessMap(cg, cgAndPA.snd.getHeapModel(), false); + DemandRefinementPointsTo fullDemandPointsTo = DemandRefinementPointsTo.makeWithDefaultFlowGraph(cg, heapModel, fam, cha, options, makeStateMachineFactory()); + fullDemandPointsTo.setRefinementPolicyFactory(chooseRefinePolicyFactory(cha)); + return fullDemandPointsTo; + } + + private static String getExclusions(String benchName) { + return CallGraphTestUtil.REGRESSION_EXCLUSIONS; + } + + // if true, construct up-front call graph cheaply (0-CFA) + private static final boolean CHEAP_CG = true; + + private static HeapModel heapModel; + + /** + * builds a call graph, and sets the corresponding heap model for analysis + * + * @param scope + * @param cha + * @param options + * @return + * @throws CancelException + * @throws IllegalArgumentException + */ + private static Pair buildCallGraph(AnalysisScope scope, ClassHierarchy cha, AnalysisOptions options) + throws IllegalArgumentException, CancelException { + CallGraph retCG = null; + PointerAnalysis retPA = null; + final AnalysisCache cache = new AnalysisCache(); + CallGraphBuilder builder; + if (CHEAP_CG) { + builder = Util.makeZeroCFABuilder(options, cache, cha, scope); + // we want vanilla 0-1 CFA, which has one abstract loc per allocation + heapModel = Util.makeVanillaZeroOneCFABuilder(options, cache, cha, scope); + } else { + builder = Util.makeZeroOneContainerCFABuilder(options, cache, cha, scope); + heapModel = (HeapModel) builder; + } + ProgressMaster master = ProgressMaster.make(new NullProgressMonitor()); + master.setMillisPerWorkItem(360000); + master.beginTask("runSolver", 1); + try { + retCG = builder.makeCallGraph(options, ProgressMonitorDelegate.createProgressMonitorDelegate(master)); + retPA = builder.getPointerAnalysis(); + } catch (CallGraphBuilderCancelException e) { + System.err.println("TIMED OUT!!"); + retCG = e.getPartialCallGraph(); + retPA = e.getPartialPointerAnalysis(); + } + return Pair.make(retCG, retPA); + } + + private static RefinementPolicyFactory chooseRefinePolicyFactory(ClassHierarchy cha) { + if (true) { + return new TunedRefinementPolicy.Factory(cha); + } else { + return new ManualRefinementPolicy.Factory(cha); + } + } + + private static StateMachineFactory makeStateMachineFactory() { + return new ContextSensitiveStateMachine.Factory(); + } + + private static List> findFailingCasts(CallGraph cg, DemandRefinementPointsTo dmp) { + final IClassHierarchy cha = dmp.getClassHierarchy(); + List> failing = new ArrayList>(); + + int numSafe = 0, numMightFail = 0; + outer: for (Iterator nodeIter = cg.iterator(); nodeIter.hasNext();) { + CGNode node = nodeIter.next(); + TypeReference declaringClass = node.getMethod().getReference().getDeclaringClass(); + // skip library classes + if (declaringClass.getClassLoader().equals(ClassLoaderReference.Primordial)) { + continue; + } + IR ir = node.getIR(); + if (ir == null) + continue; + SSAInstruction[] instrs = ir.getInstructions(); + for (int i = 0; i < instrs.length; i++) { + if (numSafe + numMightFail > MAX_CASTS) + break outer; + SSAInstruction instruction = instrs[i]; + if (instruction instanceof SSACheckCastInstruction) { + SSACheckCastInstruction castInstr = (SSACheckCastInstruction) instruction; + final TypeReference[] declaredResultTypes = castInstr.getDeclaredResultTypes(); + + boolean primOnly = true; + for (TypeReference t : declaredResultTypes) { + if (! t.isPrimitiveType()) { + primOnly = false; + } + } + if (primOnly) { + continue; + } + + System.err.println("CHECKING " + castInstr + " in " + node.getMethod()); + PointerKey castedPk = heapModel.getPointerKeyForLocal(node, castInstr.getUse(0)); + Predicate castPred = new Predicate() { + + @Override + public boolean test(InstanceKey ik) { + TypeReference ikTypeRef = ik.getConcreteType().getReference(); + for (TypeReference t : declaredResultTypes) { + if (cha.isAssignableFrom(cha.lookupClass(t), cha.lookupClass(ikTypeRef))) { + return true; + } + } + return false; + } + + }; + long startTime = System.currentTimeMillis(); + Pair> queryResult = dmp.getPointsTo(castedPk, castPred); + long runningTime = System.currentTimeMillis() - startTime; + System.err.println("running time: " + runningTime + "ms"); + final FieldRefinePolicy fieldRefinePolicy = dmp.getRefinementPolicy().getFieldRefinePolicy(); + switch (queryResult.fst) { + case SUCCESS: + System.err.println("SAFE: " + castInstr + " in " + node.getMethod()); + if (fieldRefinePolicy instanceof ManualFieldPolicy) { + ManualFieldPolicy hackedFieldPolicy = (ManualFieldPolicy) fieldRefinePolicy; + System.err.println(hackedFieldPolicy.getHistory()); + } + System.err.println("TRAVERSED " + dmp.getNumNodesTraversed() + " nodes"); + numSafe++; + break; + case NOMOREREFINE: + if (queryResult.snd != null) { + System.err.println("MIGHT FAIL: no more refinement possible for " + castInstr + " in " + node.getMethod()); + } else { + System.err.println("MIGHT FAIL: exceeded budget for " + castInstr + " in " + node.getMethod()); + } + failing.add(Pair.make(node, castInstr)); + numMightFail++; + break; + case BUDGETEXCEEDED: + System.err.println("MIGHT FAIL: exceeded budget for " + castInstr + " in " + node.getMethod()); + failing.add(Pair.make(node, castInstr)); + numMightFail++; + break; + default: + Assertions.UNREACHABLE(); + } + } + } + // break outer; + } + System.err.println("TOTAL SAFE: " + numSafe); + System.err.println("TOTAL MIGHT FAIL: " + numMightFail); + return failing; + } + +} diff --git a/com.ibm.wala.cast.java.jdt.test/testdata/test_project.zip b/com.ibm.wala.cast.java.jdt.test/testdata/test_project.zip new file mode 100644 index 0000000000000000000000000000000000000000..ea8d5aad22d34621308ca02684b5fd1af7f33bc3 GIT binary patch literal 298222 zcma&OWmuj&vo?&oySuwff#MW*cXxMaaVhRv+^xmExI4vNTHIZWd^c;g&tB!(dwnm* zk(M8mE6F)?&Loow@=~B+FhDOq%7(E5fBo|7A7~&jAQ@3*L3#;UF~+AMARzf)qEJ9e z0MV+CER0G3Q9VFI1GN8$$_UCzh>0pGGsuWt$czk2OVKk-z)R87jE#)fC^Aj6u5USx z2%|XAiA#@(s{n-olaF4(c{HVmE22s%DmiD+2=2>V!TpGYcZMH@LubQ-g>h6w=e>x# zV)JNnZ~D(9fPk!}V*~)>{^th+@Ee1PyR(U-t%0?&ot?Fii-onZiK7$a?}-BenZD}t zvT_C|6K7`&TeE-4nLGaZZ7_hGp@r=~zVuoG`j>>Hw2Aw_h++Q{Gq83vF);RUGq5&r zv9)k^HgR(PxAEbBbu)A^GqrFx`KPGatEoc$5;d~3`Nuq7OTqm^%EIv9B#~c9zD)UF zKK!DE7o=W>fBEoV;zkBe&i~Q}_y6o;Y2f;AgAx6E#}`!pG3;xVk^evRHa2kn=LBAV z;y2i)c6R?5=>G!yMas~?@n0lSeog7Oq`8T;^*_J-dVH+^Ro>0c(c1VQqrC2g{;Ssu zx^}iE_I4Jw&ZZWwCjZg};#U{@f5^Zo|2IjT9F6`(;)NtH60b<|n#nIDc@g{nA<64* zFC=;C_P>zCyzWT!?;T%}_17O`AX_H*uPExf1LJf$rqBmOzF4e zYm(T!`tl1&{#*VvNnX$Tg(NS%{)Hq)uLgP{$xD}il7#KQqAC#33uu2}1_fjc_|(O6 zS;#2h6L!ErKz{`$BWnXECwl{D^Te1=Nl<2_;PGqfq-7o}SpSbJ7_sP@l}WA#b@_vp z_>u8k5@BBNbt;v?f>yT)+wN{tE$`2^!$2j;#_Mo8>u6#k8+vrUa2$1?s>)CX3~}Kb zeY4=l*3JNRj59iuw6-$gEz8xL9g>1H#|sKMHALmgSU7BtVA5k>`dK9Uo>Pmh?40vm zy1Y71W#cfu@qL?!pUb3m-TY4fHCAPM^xUXD7-wlqtz0EkAFTiSdkVp?&P}9I&ndYn z@g;=M5MHvxMW|m%j~7ZG&c4e1RxH$C5j>pMO1A*8;2=PV?_jo}41 zq8I-`WNhbVYi(y>%Ezyt5sctSW(7K?RuMQw1< zXM+Kk*QrVwh(pQN8O2Owd{}-L34_{4Wfo{kUFK0E3nhh$b`(e;_@+@Iw^z$vqM1ad z^LBqC&|668Z1>vFe) z;J&BKJh8>8|EEH7UJ2ipI@Ljt<2nD&iN}-=c;{BK5gDic^i@HKU?9jKBdoq z9UMZGxdxmBVKkz?UDv8YnP;Fd zUVG_y_=nzp__ap>GjC$nvr!;NC5ntL*#iq>yyv;oy8d=f#I{D#rlFePF}@Ht zoF`oc`%h5xhDnY(C|jg=Ou&PXqx$$&w>5o4{=5D18Fq z^X5H~qfn0I;V6TeTwRg9lI=h8YcjqE#%su z9r@1Tsf)7AU5k^zDweoeAb8=+pl+{fsu7~pd?^W^zm1UxDi12QR0C_uBP~wg1n#QG z`Q{MvW)H1pyDW4ix*d^x5*DOx(|k}awAhWgmE%esz* zD5TUG>kH#&{0UYmANpDgwp949&Z~wpUk(l&zKm~>(5@!N-d?mPjORb`?hp_sF0*&EwAnlYFdSzFjUnJ`!yJ2M#BIhp|UWn$`- z7{!Co#RMemCW{=(XXy)5JPi-QLFVZf(@ajq&rQ8k1Uiz?dw!aE=yH?N11&~HUTRcR zmUg6@ZkI8yJYxX9VLcQRiX{LRK&Pi)&s=MX&OO9g={>5r%*1N zOgz~jIm<7al|FMZ55mQ~ir+HL9k4Y?ipHZ}369+)FP8F^F=a%}B7NpFFN__;nooVBAjLkuEH;IKc|e-0#2Krh=YGlx{7Nx&H3003bD z|G#X71sVQwx(2IL{K>lbjNmaf)(1R;;7GMWkQ&b zzTOF3oUW`++auhpJ16%Su=>HV(HMS7Z}Ga;^BHJZX!u2zHhU~Y?HPxr>B8VU-%mA_ zV+39sH&b$zk!%3jI1AtIBHdSw-L<}@)b=j!39&-MEMa-CV#)IyFY7X$xnL#RYo`0a** zr8{Q!M{grSw$ktL|9}~=bmq5yd!2w~Ux5Gt;rw2@t(~ohjh%~=@JlEoWBwZn8--!p zDFHM-R7%(VHx~P~)Crtm;@Tw&YIFkP1-Xj(K;gO8&7a8frW09{tcy^ddkPg{6)`^m z5vp88NC@MokBoSwI~^N&>*+m$RDQ&V1ovBPi@Iu%;FUonNi7`ZgA^5$+e$qYQHW#lrIjyS!5c`hZM{*;En{U@9n=E;sZ-p2*eZ~BmG$8( zqdafOJ4vhk@w0dl=9B146COhl9EWC`;J zjmngaz>-0FxgqZ%qr|J{OF0+W^%aP>_Ar>yr#+oUepf!9u1?XG(4elq_`XMzi_duj zCo^%sV)!+9Jc@tc0Iev8z(;XGg4gj>G20V!|2w9nU zx3I&TaG%a7^V0x|c5A@SXY;|tm1olA`_}2w)!kep)uuO8 z5)Wtn^TE{ee9&^;vUsHmJ1);62#&Z(0!NC_v|v5h$&C72{R*?oW;T^j?@1~@;Pj1p zr%3qKts~Y|IC968Ktvd?!frqV7pQ90;ET`zm(zjdUARsR=-1(%L&a zkM^QBB1q2LD|BA@w-&K-YR{`<6obXaRZwiSNv{Pxrrg&NVFx-eN|SnJ@qhB<@)J8H zoZ|97%M@$GbmHBqL~uE7Y7DCmpdeUuC#t+xJ7K6-C9vB zZnnfYO(a__9;rL@z=gf&4ge^yd4392YXhWn^+SQNWH4NVUrd-2Jh{Da-1z7k?hk30C>?r}D#5V^w2x&>!C zB^4Jc*w6&%93#z8pR>+-akTZ!m2W+O{OKL&RAat50*plA|Mm_ne_Mx+!mwmFz&lL! z6xLfrUOgV?>et;CYl+583K2CcG-uTdN070`eO%{nav=7HGqGIUb}D$hfepmbWujwVe@srwDx}0k0#2*N821bV z2zGul+|Mryxd(iwl-?+gds&Sv=xrh6h!Ak5YLUIXSTr2l@^sw-Gr>V9-Ts*34)LPG z$ZKZ?R9O3&IA``98$|qa0<4?~bEc5Q!if~mpo7d#*phAHkh~+s6Xy6x@@*;_yeN-E zbDE!KxyJb7V>9uBXrS|b=qKN^*H;e8rxh;F_aUqZG1jXt9-mis2E}pC{bU)jcW~2C7tXyW0kH8JPKKt~~ zrW1j=3upnGVfz7>nWF>emPZq7kn5pPqy(Qs{<%8%yzD(sfDQTp&Ktk8CxU-Osb4-y zX-O7U0Zr#)5(2&$61;GC_-`JA>uE++c81FY0T*6I}JK>JE9GVDw>&q55D^eA)qv0hs)sL^$dy+!jTa z!)Itu&3<2D`ftN)?AX;o{PI5?V}GVPh_N?uKO|H@pejupd3bLh-@d>TF#Gmpb@(uN9>Da zVoZx352^YvmlNQMGs?NW2<;ulE?V$xJPVjvHL*# z_T-30XYjP_;A`9m-YUUu=TXgfd1>MwxOcFY28tfPr3jO+JFdJJDc^5fFf9=MTwhjJ zqDOXp+1}Ia%mN04J_Y^BAR8QFK|h57y@oV6Y6~F|u8>C=;`DQ5ZTL}x|ag;mh zyutQYFT*gf(=>pC5K2Le>N+)P(D~d@3*Do7y7El?{@jBR#`YHUf$zsgz0*{68y)f5 zT^r+?+gKBEbo&V*(4iqaq7>21TbY?HTY`Flk_rZ8r|ciP7sXT2&7^Isb5#WRPy>;k zS{+X@AHuc8(RfFQDJ!w|x$fBrTyrmL_TfnU98;WUvcD+W>|0C`Wb8QsQ>GUmRk13+ z!6>#)4`iL$P$=D4)oncz%GMWJ2(WYBw1~5pDBzpCeO^FDD#BCREAVx398kO<9=bS- z(a`JQlkKzMyf2Q-y9En2f^I2c)^5z8B&Z-#@bl1T>_}6GwN`QhIBpMnU`e_dNWyi6@)-I^R6+ZXi;?-a&40N z7>~iA@$xO`(YdRb4h;mgb|#d>^N=*EgUFr5vzlNR#`dIqSOaq1{xT_7Ds+s5$BT-3 zp{{x;Lr>YH_w+d`o=;6|@tMtXdwPXG(;HD~DCm?c9z#7+%+cL$tmqK~Tf$k0=adk( zp$ed9B2X6+7lpxLEjYuqzbuY4qcsoPCi+;O6In|Wb+T8awOBj@_s6sD1_eN_#O~0f z?W=8krH-;W9usJGY}wdZ-#slEll(k8hIA~Ibj`K6u!ZK+afzi*U%Aa3u#lCN#r^5C z8L2#*$b{Qk%K%%zK(+rseZYW20PGIFm~oPnfpMgKXxMw1N3=)l^B)Z;kxGQ#Xe49+ZSJH=+v3)#=juE-KD zLGKkNR#cF3nnw8Cwlm)!XWZRAK0w%qeu52zMnHRsHI}&Ov8l4y?Ls||)M0*7MbdOdT9ie4WBY9hTCLij#F0)(KL<9UhT=;kQdA1?*sQz> z2J;SBe+#_nd69!LOQwnEj?bT{&$RG-fC3;M1!%ty)IxuUXd79;Mo}IueTuhSCb#4Z zA{uz|r=TBQK~(vpz}^Y&wu$pWX3S0mtlf7Hp3gw` z5%7Kpe!(CdQ{j`NbMo`NuRlfZMk zm%7XEQ-^$;{K=v7WB=0tN9?^uCK#f(FCn?CWeKI5{`P1ar(H_LNwgdgv?l>x*Z0Kq zqUr&w)UpW{rSU|D@ClZ)bres;bJ4!wJ@;R3%797Vo679*cW2s{7u-E&(q>K|wxV+I2Tp^Kx6$bt_};*L#1W=80v^gHq5m zos=$^k!gQ&E_>ffgjevq%tUs(QC*+fJQ4YJIc6|>0T%cz$S7$P$D4G%`m92z$lbPj4?0-MQ5^5;jMdD`Y)ku79Z|Vi z!-z3NDMppw=*%4y>aFg9cemX>2O$e{G0-HJD9>HWmVRL~O@-UfThB(6$0fDP6=lxe zha(^+;tE}|gVKZc+?9u;289&i?ZL>|{TR$puSUW{Yx?jiBY+Ex+4lbg;cuV$4-@r4-h zf!!fSZn{+(G3XD-8e_$Uu4p4*v-0`pp&OK|qXR&gw8BQ-ANO7oD`5#_O~<|fv$ z>|G$Dk&*CvM>zv4;P`5}g46xHCK=g^Az@9Dnchn_p7U56yI#?(& z55P}U8>xONgS^MBJKj5E<0m_uzO1!0R8V1aG+#Q9*$VeXuMFAW@2^A^y%_;7=-1Cx z^aJxhH(?7ur}djcctffyc%H3;R<)f25}oa8rW}xcoD*2xK`6rN#p*+F;9T5Sg<*{l zC*Mn&C`O@6p78<2q!!0M3RW|y7Dnld<7{bdwMX)@&V~|tquU@aybC|e%F`)3v|*wN zAhO&!h?~T&<)vWfi95^ z6Rt_uN32zCFyl0)+ZGxe4V%VK`G@Hv5{%byw>r~w0NIbT2rG+=&ncX+O(dH7W|1MT zS!8h1lULNRO{V6T58jn4`j)lI7qK6O*#JmbE^+E%Gh;RfV(i12#7mQOZ$$dX$ic0$ zX&i`aOYyXBmj!*Bv_}v9p4z((#)fgNE~S^VTwpGcxiGXx>#9p-zaC3p*o$#Jki-GM zIlPH|?bAzo9woZnr&W@iv}nvz($ZuxxQQS^Q(UNIRcw}h0jIp%_I>?s4Wr+OiC=4e zm#VvV>S>JgPm3)W)Gd7RnM!~y?Mp$>OX^z)P~~FfM5btB`YU9|th~gUpz%WHDvR3Z zD?JgBMKn5HT3vN2D8WuiyOzbiy23uRxapnhY_yhB;15&|uDD;s8C_jncSah_u3x-m z2eYe;IozxV*{#tBd-`LUUAQ1(pY1Qc9|LApe5hIiJ1;>9`bkWw)|xLIIYS@p?S(@8 z#25MFEL*GO^Bdl|k-!G0N0MW~dCVd9ZrzqJ=Hjj*f(Z}ed+_d_4J7YeD#{Uj=vq8p zrksdS;=hb%4c7GPw2I6Of*az1DP}U>k0j`RBKfXYY;C9>FC+S?ga_wc=I-sJuq_2o z+@tXp37lvGg0*4V^2q)rnqTF+6u3vGJkfZ?1WMFl=lFupqF+n7D=KxVCiIoqrcID( z(T-|8&^=Trr7WC2%HkX)v5F2_v~_-ZKvA6$M&B)tt1lFO z2fm0~)aHC#LDYe*ZdPTvqmX2fxxNzg^^SFu(@K;Ypp7U%V)pmh@o$a%(uU&SdHDEw z4=&p@NN6-kaY@MxHBixgielI>8qu&Y5rzD)L{y3rsUPC?T4b{iP`J&>e~Np-9VxMMd-rY!=Sfou?DWq-uB)K=!U1%@BABjqc9qO5FRC zXpyYs%Gf==#g}7>{2X(i-iJktyl#2Q*-^jF=I&0`9q_JMo`?~m2&?tw7(ZzAqhkf# zJA#*)OZ*(qK2-5U8GdmqgWpg|gLL%RX^KGvjfIl#Yiu|esvI<4q5JL2N3)S(0*^ph5xoFdYRU+E&-&c zJ`txrbA&QldKGzODN!y*ZFFn2pX>`8s)iUGxNF0bm48ti1ux~!d;8?9Wd(TTY%fPJ zdmuo{esVMIn`Vjj0{ifHb2)p`3`s(SMc_~7$X)7Nj!KyblZQRT@qyl-QDcvS6cWAD z${*Fh2}AS9JJbmoO0$zt2**X4&_gG0Y$l`$XTsL+fAT?U zBL;;*WgNG*AMi<_qSHgPmcR=INswq%Ha;SL6c}&bTI*y#J;%LOn2+a@+IGyp)E|BH zyZ;o)dTc3B0g`o_h)3V%ksj)F_961z3SkLP%A;xs*Pa7xjC~BfvDmKHO>1hO$2=0^ z&bhV5ymM3Ch!)c%Y2JL(wFnpb(+ChL#3GkI=_BLE-OUU9Er$MoUdjRzAU;eNM->3y z6a&b^BL0dNFW@@;ZAdPPN3y7ZQ?#%fkMq}WN!2zAf&MT-G>H{LcZy(TF=71jD0vjN zO9gb)UluUd1Z1QiPONTW^Fjd$5bSZf6iK14d+Drh$9y+q89#rHN9zHZo{8kX6IiR( zI!X$pK;o-kTWV@vDc;IVjLwkMB5K^`SiTMxAYyeP%C=!Ii}C{!qHqQSCn0b6ewdM& zfPd1YQ_cedT435+PB@=gc8w|a#cQ)3%y>|)Ua~v%hyx5IRjojF^09u0!?H{X5&}%f z5}OJ6ok%Yay=vZqZY0YYtv?(YGg&Ok?n!#$r^rvCR*kYvZuN7H34$F%+Of`a9q}ACikcq zf6Ol!csrOwA{tjpGSu{@D9NLajta7lPkE`?(4|+K#i-q5UnM=aj0N{eWTf~IYa<*o z+Z&i=3{!1TCyFZM{u0}>J@&F=9p^IAz}wg3Sm2N}_*?XV=qXI=OzIu#k1g!n=@1t- zIFeobLZ5g2Jw$YCluvT+4h4n%>n%B$Ztz1#KZ{|FS!rZ&WzN+I8k%yaB=)5GOAi{K zN);eU4qom^5~s%{U6&~CNL7VH(|7Ggw{n15VfzJ>fI>pF5!jS(L;!fKBiH!$FGtc92!JfD02Z z3JVZoHgr@{QfDelH6+EvVx=AsL;g5n?ZoZ;;ezMhz@84sQw1o>FmnE%d_Na%`mZ3? zQSIJ(f=Pa81fv{pgI<+P94b#8+kWqld!P+r&jfV_5{*<)nviyXLNqFi2P1)1^aiz8 z7i;EJ*7-<66$7o+{)nZL*F%_(AN9O11;9l*Ts3Lg z+a%t=-kaHaLSeP4K6J$}AJP$veR-@~3CsL*nX9ym4KJlzl>i#!|Dv#niK&5$wX-mw zn8Ml7#mL#t@fV>1cmA?~BMYCAUy^144biRlQZBNN(ekahbSVQHk_-EE7<*l00lT-~ z^M)8oBp}OR(xMcCQ%AF(LA!S>D1MVdAK0U$Qxlxo<@6R@c~P5((afV?KSQQyHB$2U1^!! zOxEBWH~YNKy-mr|qH4BjIr@*R&0<@)$M437s8(~qF9)Z8z8^GPxi#la3F@TxcoNJ0~qRhwf3EfW3 z9fZbvzkouaQeq5pAuT>tw1h@MibNdFeS8WM6eLs)mPonV9dJqh-aYK)6oOZ_fX-|p zf*9Q$`ef%mYFOk9rns^y;IbsUM|$J^nDV3<5=?N+J75zuYR)hiNwP2LBUyW69UvIc z=veAqEYwt}<3yQE#uWIpS%2#HW3D7S`>*)-y9!*y#1T*^Z2Y$|+sOT`Q%smd#opX? zP*g$(U4>cLWf%`T%$3fGr$~3*24;h)pr5%|!G}SyRh=7B~A^)=S zNFP-N7u~<1<-&#TBa35I5K9i$M>of|byV}QB}%Rgdz`DSFD%igANYRUs_(X0XW)?H z`34vyl{}EXU0PjCM1P?h zJt_;R7Xlpeg|_NJa!Fudljeg$VL5-;-AagugichpC*WAcP!zCFG&mZFYu^IBO*mVw z?~Dvj<#9SrwPRW1&(Z^mnqY}VMFK?)7VzHIt?@9401GpF>WXHdazmg55o1j8KmkdD zN970_6F*3-YCpC8u~UM%TDG^0S{w5>&HcDc(qh=bUS;xWx;oF}pz6$uii zeMcd`8!<5bi~-)80yFTH2tmhg*Gf9?gs<40;L5+31;&UIrfX{=-c!LmK5<9JUy!Kg zxG_*NbOzdSFl$daoOZx1iQAe*s;z_iT{BfpwGu8(F^GhTSqO2)B5ekGeflA-nEjIXGI8@;NeQ~+DGisq62lhdl{>Xhe%Bu3zTMqmi?T;n#X({ab(Q0i zdLA)IpW6SlWp~ll>X&`oOL5Zg!|8ugp}!NMiZXIbfJA6oAeVy<%DEsEd;wts1u;4M zoHCwf=b#N@D2WQ6%?JmUf24NN7NNs7h$5-VejR`5{t`Jkrlk~XjosQv%gVxxQhDCkHDfoDZikzVU6H#`fomBgh`~02<^>!W<5kgjLt;1{ zkWvFMXe~s_goS3L=!l!=~z3Jg_-zUWgE;P;XGKSV{ zJ>Y92SG92PB_FrL!1G4E73P6}bJ(A83vB z(?P!1&nLp_{3y&Ui5*XfU!m|IE~d@n5NyyoJ;g#)NI#hjr2(JOd!l5q1{qFYzSqDn z%0`h5Zt!Uu9Ghk#PDQd?$?>*RXt2Z{|7Yy%X|1&YGowc4A=ONn!5B~4P(P;jM;@yF zE#`4cF5)uqM@wYm)AX=-8A!8>NO%jbpdISC+`Y)O#4v?T{WqwCKG7Pz;UHe4!eiX4 z#fP62!bjj5#KE1dYb^bIQ@7_CBtv^H@sl!Qp+1K2-OK(=i2KCOD=c7qN4e&8?=v~X zR#8&o(nlIEI|I12iKJPJJ3@xufhWNo(DNm*1IeOUQ>^vp;HvbWHF6m7`9q4uWg1P9-@I9fR^kZdq(gS^pzxr<+j=H)T(q%Ezt5w*Er(1x^~U#Z z2{tn~qT{R<-oEqPK1fTw7q{n8uSHmb>hWKD;x|uq`o<)!(&nqi6pTmifw1G?r`oq; zzSjHx*7usFe7%&AKT>qe0^#KL8scrYOrPC%tL4Jh078f4>$l#Wpo{kiv+icT2(`KK zCpw=e!wGuaJ+99eufH=LL9brJ{rJ2l#{pd}Vdy`%O?R@+&2R%^HLx|#Y()UM{)347 zGTy)+F8(%VK02gT`cTEN0{QE}{#v`J=LngAa{6=TGf`^j^>A_@1%6RYVA@)Jc%XP(O3YM=;$G zAU`oiqVX#wL^O7%Le04I5hvxFRRZqMI&c|`EQkWbIYNBmU-AC5Yd$?%o354xVHvm2 z_32YF%V`krIW}uN>D5i?oCA@5S}|;br$hQ(StV=D_75>tL*|&!NUcVrAJ;y7*K$QA zIA0sX-$#U*SvPpAghjPBd?qzvmyG&~F{@#VG-L#MbM~zV)Nj#W05i>cqGf>DJ|j28%pjhK!5F+tJoT=2`Agl4_Op z&^2MJ$%_zw^~E+{mn1!&+O71KKKMp8;2!eaNR!V@rCl|hX$Kyk#*N{AJdyYOgq?nn z`iz2G;Wjq$;J+16(WqgQVPtgE|Bzsi=H5q!@oCxVOeW0N5F>~N%{(`ZefryvejB6) zg?=Tr^B3~bl3vd703-; z{h1drzSI;7ZR6SYK65Ai;^3x%5QwA7Mqi9*?hIt_XFolth2M{y2ePy_xckwJ)f`77 zze6R)(;sFaC5wxh0{5bg71H@J4KaeM`m<*sSEg*cCFW|^AIRk$h1Blfvz*sHbEZTg zw&eKkNuMr8z~^H^DO;Un_%yC?o%?%h8KpAvf8D3L?$S5UCex=>(VhQL$2y8d1#A4q zVBR9NGIq{ztgEFkX@5}s=N$d=H}52A!<&vC`elwv@y#8_HR4_I>zP`kA`=7Z)WZ;??(-LiUb>gfj_TO?|3^Bwt(9zH!3AAA>3 zTug{&dGqhUI3Qvm$4-2Si(5+)!^Pu~i^+6y0w45YDK)~c-F-cF&J9vIzJ8~2ROz4k zNF$9f{mrHdE(-i{OTi2c{&&Z05@`twWa=I0l2+ORI@x0zG^QFV`5C6$ znv>hGq|J}lZu2K&P0f+4%6IhX`U*>&?S@Ux&u~_h#ci4MS6QeB3GD&&HkoL=_d^Nd zq&e~;2;?Z0cS(1u>a6{xG^!;BmpIc}>f)uzeac)*!uxneY38w(sey#w9azrd!3+)% z|8yf{DbvPa05{?aXuq@TfWk;o_g~vd9a$NvzwXuh$RcNYO5N!*rvr#}6A2Qo(Jr&m zcx@*OY(q69Q1{l(mF0`wd=j|QB#|&(->$yDFl}pFn*%b$Yp#SEQ$LtsaWz2gYH~+c zU^9GYLXV~(JSd#6YoacNqNN>!bwQDLom3=w>!z83m0Pus z)g1h+i5m~Jl76J-_QGTNtF~zRAdwlZyB++IlQWLJuT4~Ir0)fSSrz6=LQ8sv&pFBa>5h695{IE&%B-m<=n=~3)gM05kMlf4HV0eQ6PL>E&`kJ z9Wbwu9Rmi*L~f%TLrv2N{ghd${B`;_0=!YE)u5($NKGXuo$MJ79i2JEXg$Fi8>B*ri0@0PvU!65AyiAl0Ot^Ko&j)FgL_#KrMdk`= zoVXPj=xyh}hdONl;X%1+ez-GQhJ2938kC7rgVM8n^J9OmTiDw1s2n^(Derf%fpj!v*5gZFk>Vh051gnb9aNXjW(dLJolTJ2MKftKa1YI#GX_Rq&d`lr@eP z?g6AfX7qk1QU&0yJl&rl!M|Uod77S?)`H}|h8G>}@;DmBEDz1WU}qyE*$hx^aD^`r zAp`vJn@og+A#gI%*k)b?jD~DpnRVg$r}d0o#kr!uvDK%P^~|(Tm~Vm=(G0v@Ofv<| z*2kZMxESHHIFFC`Q(Wz8Ge_I2vKQ(3+&)DB zVsHRg{!i3?o7V3e^HUmSq|Gf*3Hy%>*4E1g+WOXplLH{aU5-?!Sc+PTntA-g=%HlI zH}9}dlmiCnj;&o9tf98yEl0H ziFn~HK2yH!L)Euf5r$|s7C2EY&mV6+@j}=AqP08a>%BgH1tk!lc}7tBuFQbN#-lq+ zyc_}vcYjnvx}9^`8WhYI?3o;Gqe*xcs_vsv7=_}v86=;>IwNmX+@o4xw|q6*MR&cI zZi_Y|=dA2dOh>>xy?DK*^T-slnxAJo@zWcPt1E6uzcY@&Z3Xi}+hPJlBhZs(vS8Xu z89O2MQ#yUDR{;rdh9Lz3N2M_HGikPV_DH2vJ2YB}tb$q?Glfh7%~v6dMv*(C@abhD zlezpMenoZ)ojAdQNws2x;VW{4dW|peNo}U=hBIfcE`P0+9gD~S@FxS>Kb)b2@-Jt| zCl5#!0Ukd!(4$!vz_j_MG=gDp=vXbY5nBj36Yo7KGRiA1<)gI^MTYkE1QD*k!;B~I*sJ!D)2 z7AR+rTjb!--yh45fc>&qbJ;ovFgm{u=$;YlUtZg+<-zOZxX*tPYgJ&5uG zwaOjg2kr{?6&TRSL7wzEpC(h4me0nAd^t(Tjm7GZ{C|d*Ntk7$dw{c42O#>pW&z*^ z6#h;QiOR`H0bT@qO+8x9)qSyPeP2tU&8yV{1#VE1AbGODW+}Pc(Y*9bP5?vjQvcx) z7lt6c`k{rB^{?j<_CZr%_(EI_uBk+1a1Dl(j-;hU4{ggd3rM*cOkYU8;pgzgi>Wm? z5rgeavD4ZeiCqbB4IvRzz`^L0i2hV8y%$UfcFF6KG?>kuWq79VW96q1^)(27+ss?) zF|3!_L>HTtjL)0sVx3V-{ou{H)8Kr{vAUfH+M8hZf_>Wrcsn) z&tS`g0fwQe%j%=;YkH-zKJ3!j zlIxGbl~?B~EB;6$Cx8w<0NQVhl>nIR-%8-QvYUGg0RbTlA?pf3AqIgV*YNPc6#_#H z!tZlWwa8<7Pm8nHbN=V)O%ySRsLScN%AWK|Wibd-co{P>i1PJ^$=prlh7r8%m`XEU z2}=b{Lq|(-ONY=L0&#v^P*8b#P$(vlQDYN*&?>BXKQdHM$XAv0$G)=i_JFAc0NU^C zTnQx$z^gP9VZhn%m#w^>Cc*gn$g+RB@=i~By5avd-SUX(^z?_*hun0umkEzDWy{-p zTPQe|YMIK?$iv2AdlDU4!@&sz!4Y*pvBf3&!S@*IL&izN;k}w8T%YF0Sb#aJ1I+n9 zbF?)FB;B12Y>iBQIa3??CCLqWG@YUn3EZj0@R@!0)H5;KF9mI`r-GtLEce;U#+kDF zsn_B%L}Jg~a%ZBQ{s4~}dY~+5AU&XIc5+xVyZUqMY7big7Z*VhWYvI6zDm}3Udaa1 z!mq2KCGkrR;5pRBy5bcI@XrPWmugb|nSC9V^uw~3wd z&CC=cUt+bs#eGlRT4)p;9;swdEg1Bs3z9-q43Im@YZc<`q0ChaI+e*MzG*?j^*g3DjH2g@x6zO>OPOJ zsvn8;nXDB6N_+ye-%pGr{#K%iv6zL4_3!Hw`Ckv+E)&(Q^i&UOR_aJF=EA~Z{E=J~ zs6)ymcp{Z7L71=Fm#L`!s$Qm`Pw>Zf98Yh$$#gRF_U3N~PR~sgmdtj?=PeQMw{$L; zaZV7{%w~(NsOCxZTWh_bu*8Bj9(T#!fCVmF!G_9b?2dKR?_?kf_}md(2I|7|{#x0Y zv9$!HxbeHZEF{ZhFeAd$S-f|S-`9Q5zLA<~KY`ZAU51sP4*8(ZpIPmR^mpWuk@z4@ z<|(W(9RGfctY&WD>?Gk#CTr&`Xl7tx`zur^EJ=a@o_%SJPFS2L z>C}GJ@bDY?xSs*-9md4l_u%gfTPmleokv#GJWwN; zN$}yn@-m4*EjEy>UA>D(dV+^eJ6swcKiP;L1+7X6OXcxaZ7UsfN%~3)#w%MYkJm*N zfkfRx?5*~p^8u=aST&0;)}X#R z8O6FVLP~$QK!FTGJbLez(Q+%XB!ReNH)<|$a35cON!}aHqiGUi&Oz>*w>y0QA79@b z9tqccImyJf?TKyMM#r|D$pjPIwr$(C?POw2IGJ$!)qeZEzukSFbo&23x2n#qI(6>x zRLgZv52!~ZB)e6he4=Ujs)DJe+lY#0l9FkG{7?BGX?TUqJOrKTnWe2HtkWjkDq!JI zQ&#DTTM}SQI-edn-&x1v&#?0@^<}|Gg}ns?lo6m(z-=0J02Z*EKcSKdBVCF~X9X9A zaF%U#$Xj6pdm*ZkGh4)btn%UR3y7S4ufqGuZJN|h-ddH1rZ6-5tmig$9(G9;LAA&U_8oe6N=qBFFGww)QKH@p)t)w#&6z`aCf ze>H{T%Sw(kR!fh&qTjhc&fQx1T^YI*A$o4jpp4jLZ!B`78yhX%{YcR;K zuMgNL2H?cnDS3wh)+j3(YgRw$_7V0tLw-aHL+a(yC98nfI zY;=||P>w$xcpW+_Gb4~2uVq%c@xdm){LtZmJ@q3hB|a+CC7mCVEuA#pq;W@;b?j@L zUbA4p#pmKQc1fs$GNBUJ0Jnlj5Z20Vm`zWSHR>wGQ%#1_P9y8vOv?-9O5r>YVXKkE z9Z_t$3*>&5A&5uESVzPL4^dhZwG)l7sDE)hmrw%!J|G5Sz=-^3a`qn_{`&QU{_dV9 zw6d>3%v0Fr!Rx<$!b1=}R8<}Hla`F5^PT39A@P#%p=~La$RQO70`*i*}~H z5?;}W(#*@k!*e|~d3V?&;0t0?aF|D?m_@}rwk@eZL4eoSAI86M85a$4$YNuxcC-KWEH$=lElbknqk7NPsTop*OCYkboHWDb zF5MrQ*oI64)jB)Jq^l>$>J4KnR|byub+jKLMNCTvq-ynQXP{FeR<~rSTNX(um0Pbff0rbs>rWXG}hfO$liJkfFkc#z-J#kR_M(BwFI2YtM6ogHG4iKbEP5WN z9*0ry5UymCqmcr=JqKL}4aayyevB&HTNhU^7gr50*{1>@Zx0;bzjQ9o=IvV5t1{Ev zffr~+!H*c>=)ib=8@4viH%N4&$Uc0WoJt3sN@cIFi3$fLFB7b~JgOK-fZ5ixX(uQ; zQ0h*snL;61-N%-qahOVJkwx^70x^7B?yYHrkyH3P<5_icr)w$H@)9=s^ zE``d~cea<26lWJa{XUc*bY!Io7abw5znrWyStslF!JF|JPcw^mVfDrqVqtvz&KI92 zc)mV+LMjJsiDRj^XN{yf>5A0|j5JT&(sl7f?vKS3ij=8_2F;uyS5ogry0S{`W(Ai@ z>u-f5Jm?N~n4m92C}(RZJpdtaGCAa4$se)f)XxT#{g7!=tun$HDisuUM)AWP)_NNwsNgDI zW>kG--SHTScHfdG$h*w!hSdg3gO-BM?6l-LO~jX?(>!7V)N+MZ4P;k1Hku0>cNLvxkpS0Nb$}E()P@J&1oq%caA_Rq0 zriFnw>4={-10k7tH9ICDQVFCfA}cw>!+?ge`5PrW^|or8-Wn_F*RPY^6pM~)P~gvL zW0h9B7&?|P`zJ=redgO^)MH6op-}6K2{+dAre4L7KQL$cz! z!+P-0{Wot&D(|rB@U_$AFOn+(#shZ_BufMJT=^Oa)t>dIcXfkVSG z9mXN>_yUH=GCv9kcZ{)TQos1q<$DYHBs`(a#O+_Ohd%rFYz`8Lr|TtQg93^cQ;#v0 zOI>f+dyu9B-w*lHUa32hy}QjCnxVSqII8ZOqf*c@1ElX$ATqk~O{3hhWfWE^qOuMNvV~ zj3(ni6HY+l>!yae!#D!)t?2XNwZK}jmqK*cRY~+kw)68pe^b|ep;8pLP*N04^JF-r z8Aoce{}QlBz3hu1T&j#Pt5={?q7M1~FJ_O5!3CF0k3hnFzv)Cdk*_5{nk z?*k7tA(iAlth|&LrF3+N%JXp3V7)Soi%e6AGy4ARp2D!rJxF)j-|s8!8GvZ;Bb#c7 zm3WQrP9q;_fSH+Fy;UFI4z+@MLov3(QLD$E^LA9twvIdB$?7}U-3ob|ak_V}tbFpf zQk)<(MAE?&e_9#2z_|6((0YMk3rL)v?{T`{4DVp>(%f+%*2Fm>S_6lc;cESe;Y9dI zv21B5PhFRdNz(m&_Cc=>?NCO7pt5$@=)w6EJh*R;Lkhd z9Zl~xXW@sT#kthj3V471>q0%oRCQzm#9I+~ll%YU{m*8w5^x7w35oAu<*fPCtk`nL z)Br+iUK_a-2}&6;=$^v;(uigQ=N#v)R1cK&B#&@5Cj5wAIGMhK<#;-a#o6rf{N(_( zm+6r$5UQ>CT)Jj2bgx#ua_P5PwfYJYajN$X8FjS7wqn(Wbqoi2NDQ1P= z?~`t}ADOTzN91^o&~d}N@)UvqMkFy=39JYRRx;?lcxlNd8x6f^0@~9psEN2h7wcJc zd2NqoZUuj2@}St91xhTxrNM9W=BsV+(j2IxMrtC_u+vU(Ka_|>gUGpOz^qX2&-+Ht z$6>XbSW2iQteC(KILJb9nxV#eT-h#urm8Rrm#UjHZN@+SxAK?#M$0iuz9^mx`jV(jfMw1ujWt*B%pqF1P>2~r4^AC?t2)rMl z3GnZQ)MBi<+SD@C_RFcaPjF6HD4d$Ag8BUGrj}YBgKGhVC;$l2|GcUF6Ow=NL)X92 zDX6G8PtMSKd^4oBiiPe%_k-~xdQg1AS$R;VY4)#}o1v!iCwK;VE48?y_#x3Zo!RC* zjX$0B_Q&S7qL7}%_gIV8YP`j7{deVSR#83W2vG*ELjhF30>5c@+qf6;kp+rsZvw+Z z2nz8Uk3ri|*V(fd+PNh99Bu|`te;lX2D#C*hqQo*Hgy)62}yKQ6b*wIpy=`6v{E9^>+l6Ot~KRSkZ8EvD(O_ zn?SsRec>X^R0Ur>gr~U2JL+XDmf6~9IU8p=ol8dQ3G89-VZ46_5idRlB{~ot93YjW z{C_1)6<4D_u=?ZcA6BPgYd^1u=41C|Q<0e&kpBODbAK`cupQcBZESonTml35^b z!;^&vn+z?PoZ_8Cz`}nmKTM#P(3H1D^@3WE>v+?7=I*}p=KR;MoKFO~(|JsltR1>* zJEx&U4lwco*;{$%qT_qB*cZTM$#VQTzS3?t#3BxZQMm0Fp}gT(d%2;NFF)FL9v~U8 zlEYbyq`$#E%U@?r`tSJ%u`*LAw_5m-j>J-ze{W0PNva8!sJ`eywv%9HVh-C)0yKpG?1f~WorB- zCtM9^^;083&!!B>b;!wMZCDTNvD>GxbKW!>&FWDq1TQBabIH!n9^wwib1!peY6*&$ z=0q>H#tTD?FL%XCju-+OEAGOXusC8mQ1Z*1Wv&Cibg4Aq?$C@UG`TVHCywlAV)A&1RiHA=?z}Zcrht6H$>VJu}|Q_ZLc(mI`8mjEFCEQv~QVU za7cz_2$x8#wEbW60nY`w`n1155Ai1$Ry{KFJyMHiLA|09W$MnApYXy<+8&DbdiWA8 zFKXonCQ_nFS@5Wb$$)_JEx*{D_WnzrvCji3UID}r1W2p?uNS?4s%zYa6;LM~{E>th zuePSNfQR#Imtb?yjVNTkBl$ZX6_)I`I3rNv)TVYhG(2pRwjX&;af0*0^tYeBmd5*{ zs}LF$W~FVV*_)X^UhPcLeYdU5U<8ASVpN^8(|CN*TdT;Bgl(m~ZP~mS|7mge?O618 zogh0u!t)`WpO-V-lk7+e5!^n$a1yja6M5|R<(n!O6t82f(6TtpS4avN(6VrZRBMR5 zXLioZ(vy%2m!w{=hT{o48F9aDM8t)5P8wFq>+!Q7QuJ?^Z;v&l?(2_dQrqGPG9GqD zX|5xmAZe(W1)FEUM2!cBN9Mj)%AF+ztN;vD5a~f=p1aQ|qf)3B4l7g&YJYhKjB4nA z_BMB)Y{@(RvKtwVw!w7YsIhiyqV-NtBW0OSUHdfJ!EwS!^kT3JKa#Qk4Q6GDr8wz` z+3!_>>rQ}C0~E1y3-}bPqTg)j+(RjGTq&Z*KbqY;%}>9a-sEM(jlT&DruBj z_wxOB6OFuwUp5vPq|(3=@XxUHKh2xJ6TYpAwZb2pcMB`crhd|N)QE?2GJY^5{NXXS z=(fspg%IRE7R9xRLv|}REfBAAK64gQWK1^|z}=4G*jZ3Z&+ExH=VPFi&BcyykI!d- zuuyd%Q=zwcB~fy-ZV69Dh9bHHWTZ`E_6)-;Geg%myk~A+|XuFnv2vh zv1EOyvg4?}R;$&Rsbna{Rs~mpdgEKF1m{7)owWv^gYK1|Hhl)YF)2StXHShHi6$O$ zO^u@H7_R_zj67=%)3#YmCX^$Uc<(H#(4ogAj&sBp3d~O(Yz!{DOLXEkW0Xm>iM)Ne ztv+8hb;UKM5sekr8qi5uEE)(lU*|rm>s66YD5sQP)s{bkNB>zG@Ws|Gwl6+-1j#83bEPR1KTSx2^@wiW;pbHh;O7Mtk5cM@<&&43+GU(4d*ana7mBH= z3kn3t&fj1MGjl~cqxkTf^$Cm!ogb$&#Ig7526y9U@Ce`IV)CCf=CP*=GF17bZ-)3h zLm9O?rN2V@Jthq^4K5=S-ZJfLpH^X@Tt_<`EP26_;-3Cgh@@*|tiySVHX)hqCvm5# z5Nd*T8d3Q*4KqV5%_HhFfHeqpNj3bGVMrN~+6x2O6l}>$oCSgqII)fH#0Li)M>5OdoXyz~3dIz!mL zeGg=BGQ0m$MfepQt{4Jy6gTh~ll+fb1GELVG&ZzR20pFvzs+X_tJ{c-aOrZMg5TD2^|jfw*8~rG)Q5u_L^StInV5E@(||O zUw_gn#gSx6%^y}YAx8tgiD`q296qiT&U$+Akye<+tTA#_*HfnsMvG!T0}+KN9) zb;N8oTe4Zh$5@LXax|Er=QSQ%?T*my(iG4=>TkH_??;Y`bBj@5i{036HOiBXmXhG8 z5ZKar3>)l^8XHEB$fq{b>%x0a5?p_mvtjJShU8o=nf;o|(MJZ{St}8xju;EE5_fW< z&=m;f?RS5 z3zD*kt|u)=H)5w|sKu!Pe3kZ8M^Emgdc=T9)J&vtfj@`t_S=^&l4|i>z@4cj@C9Rr zZWWMNHaCIKkkSY%^kW@g9o8dxrxQK?*V1&ge&C=e5S(6M5h42j0`xZvV10r>>TJ?Qg}rYpMTYmmRiX@pkpj z=F^*8zcyJqeBa-n;SEr~aT|dK1s_md*HU`#D4V;>6*}X#i#1{%I4kyptIsRPo45h)EU+=$aBP31Z0KTG; z&!A~X(+U}kWQj=+f0WwhLLCL8w^(=B3l-{FDGlHJQm`L2!3h9!RNjE)hVer31523C zEmx{Wgr))Y*&uz(QAeR^>~-5UZ8J&t3sQqN=&7|C43?bxZqp(xPiOAFi8e<+4(QQg z^{wTnQ)GUX%o~>7QfD<|w8)z?q_LXJK?4U_(OueNuJi)1VOC@6drz+?t}&y?)1jfO zcW~yBA>yO%S4yV*sjn7*&`_8HlOJ54=g{n&hGk5q`%`aOoKYgRF_A_@Xtl=7ip3%t)dMLw2bnKOG*qv7MpgTHSC`Esf2tgJo zujaxVJaQ8#5$K8sm58*l0F2%IypL)pCvC^8l^s@vGhcX=rgWWxFK-tjXovrmB4~)G zYyyBOA_#a2$^OR){8JZ1_UC^ESD@A2Kb-Wh1`({JEuEsB9uhiwlL1Nk6T}U0ViXt( z9sJ85m+lMQ>ClO}r6MZfADfJv8%Rp`h6-lp)7fb(FE_s*5q81Uppk=xCz{(f8sTQn zA&jq*MJ~Yj-N^^B8uJ{@7ikB&%UqvD_uvIRMFOp0CsD43QP?7qFMwc&1(S!sN$zIHNJO{t59hZak> zsZI))vtg?J#!Uylv6@sn5c?(}CWieDZXQrbn*p()-CsHH3hLfFBWL)9qr{gi5NlC0 z{oDRni%_CPjMB4gv87QOn%IdXps-VR?#q^#co_jdYNxO_9M_kAPRH+Htio)O=!J2} zR-+_bY8FV^i}4DhYLto;RGqo3DoVm{s--L{((*|ptB5zBJV%Sf=GbX^G5?#YKywGt z#sES54g~R^Hu8_sA_I7+dVgE@$(VdYzl_$(N3-4jk zV0QA#WuJ&4wMXffRZq$O)w|}4xVy3+@2or+3#1ZWkpOsG?l#JgnCG6x2s~*5JhX5m zuUp0_Y~~Q9N`;1vX8CEgjuP<0+8w2?WNDIw9`w6YS5_q2KvZFz&UQ5=+ENIOJxN6t zx%}3R(iS`~43DWw-GVhUNd3}?v-c#v@)(nR3q{IFRH7% z%FeIMd5#UhHg=osGfBhejL%owvFaZFzbu#1y{N0_o}Tpe@ep? z{tszbCQvPAIn&v>NOGJxxNnrR7(V%9Ff(^?FwuxFR_PD@72luwtL*=`{_2R0L@xC2 zWA~r&ri+G?p#xA(_}7Uujh*?UnLOMRG;c(gPePsV{*E>05$F*c7znl~8W7e3&e2|s zL8rYvl!3TABx=0hcd``1ET2-0BD=7aR>QLMTD&6w^jUqZH6`vdXyJ3cy6fQC(`LlN zQ1JRnlY|!`X(}1rHqpBdXC~sQjL(Qw`rWT{&vla$~- z|1N#gkxUjY{}EftH;tx)_b9AV&)@#x!F!{=ITqIohP#NOGQoFuy6X`Yy#lU>f_M-b zJcf{NmI-8UG{K^+2x1UJ81pXEO3NgCLM^&q3tFDSCs|CPO-^-Yv(V2fEvy8t83CK$sR@v#STa< zloedACHU$}S|j`bdjZmRMu|ln1c;HuRv6Q4JxX*XZl<4Y$g7HI_qqF5!tmoSn{@^v z_lMune=e`U1aD?&Y^n-;Ip!bjoYET5feMYUrA!XD!p*Vb1*R&rsGGVQEl_w7Qby1# zeb^G;5;e5!<4{HEPp7#As?c4y$+QmOs^;X#@j1_Tj7M7&u!bz6WhMRJ?G=Ov$x)TL z_qo}s&ZYi93ivDc4G_!2<`*^trrxy&U4Qvgo~Krk$_R$5FVh;-n~UJVWl^mw4?}fx zRzpNVjH1prbM0xHSGo7C!n1!=GEJ}+(Bta6RC6#27LX8pET~wkWJr2!xO&=*m&lZ3 z!BE?{ZRfE75S|)locJe{unHOK2~>k+0noQImaBVdGFc0of;T*V zoFcRa7|sGiAYU2=lQ>4F0u_D*-^xkJDRyys_2utgq}0WmO%u&L!(dxc6-Cg)|7t* zSyHT=HPC)Lc!#CUvb(s;GQDxR7zekH)h}9ls=t&7gc!v&&ul>~RhGe3n)!<*i7P2o zILXO$6qPbkI|iJ8s6g+|zP;j1mz>pSJG|6y+s@a&J%C!+^K<=tOF$t3$!Y#*rD>*w^SVi8I4I1q@d8%ahZ_JY(*&PI;Q7>BWVnS?S^4baQ0xFeNPCzmHP zYuJc4Z+N;TLU%3^JhR*P&a3ORs|hPlgNR2aiS;Vqzk;2_gfO$4Rr-XH_Bpaw#3128 zCPwHp>P{lW(P9XY{-)yV zXulOz*E@ZMItWg`|N7y$SGiH{rkB7^O@YQw)}g|_i8vK%o| z{hkkuL|Nb_{67`??_Ux4@}Tiw!RV^G;f$(=_b#8|*08aV&?s!F1_sV5mq@i;uH6O@ zT&D-23tQAS%gEek9xG0;iMv^I&%xJ=i{rrmW_SYUkBKD+^6`lzto9m+LF0+64)#_I z-F9l*fY}k@hD)u^811UngP#?vx6noIB7a6~@x1)$$QwR2*tq9SJK#o1M^-2H(3Uh= zHa6!!?&EKa+l<<-O;1=lT7GXSjjJ;KR?slu$QFusb9NDBm7+G{jn5ZfOc9si9@DOu zWk|G?{+)deExY)pszGzKmn<@fk=#)qbShH%DATNO3K7qqW*Kzg4zECx=2R>?k{bLXATwO#gWqMv;Crj`eT-gVm~6aW&gwg4ETB75EEl`y@~<3ROw_rjv;U z!$FYf01r~uv0LbMs0>!dwdu4tzaSAtwbB7cthQJ|5eQ_E@H(|wrD%>Ngbqv7GcPmF z=(2hLY4XwzpMsMVtE6CRwOtQwXEjkbO%oQiX&$`mGt@gC`AE81^2tSvbMmjVDj{|R zZhXEa+z>WJnrE>79f zZgV{K!9Q#~p#x~J^oES1QCMg^c<)R*aurYZoyi8dY*6$AgF@2BR{bbXn{td(dNugN60Jtt*p-7R?fgX-b&Gw&o(yB=Q|#rI1$kkQ*?u1rql`P z^kLl4&F}N9?thaFBUD7vU}C7=OKgo+7=-ttw%d<e*Ad0%C=qNM%V>Ft(|JPwE+z_G2-Fzk{jw>Q5gqz%RO;dq?b|%wL zXY|r1f8wt$n`V-11KE?rVc}6E(im9DwuOCc+D&mn>J91euv}B@Ha`rln@tNoW#s)R z7u=SU$c`ikC2Me*{04J<@L3waikrcnsbh&kHA%O z-eSSb@g$}ntB?xfOK6|Jka$G4Ab?_7tbg-@(;ncoil^39bz(auHC=Z_cC_k6E&;l+ zF0s@{7`Lwr(8(R;Q*DdExi-v@nHSQP6}wR8-m>3$_5Sx5_LA_YauyJqKeP=0O@BmH zoeY6bko{>%E2p$!w++G z1wx>3o>7(WPKqIDRx;0xy7SGTA+)x!4iI9(xj~7e)kx`zvNtv!F@OgI-~G!5K9MD3 zmdbC#k^4>9IEc?z7;hEjDIJgte4=xF!fSluL$(E1K7;IsxX$bs1{&6@z1dgQv;66U z{j>8n+yAPdsW1x8e@x8`fPkX@-ER7;f{L0M{)Hx=@?Sm9g=9Nm&oPLaB=q*nrIn4> za4JtCrp0k#fM9Bh&-Sk65$>y9&65Dp?+?W0xy zoWn3b33sjxRRCb-)REKIQg+880O;KfVnCB0#$ewNeqMB@eEh3_@j`JUg8e8nA`1R)d6#wmNlFNKLlgrkO zUg6_GkmeJdX_H+p7;`iOVkK?5&OB0Nn;+^)?O@NQzUnn19d&x0fmANLc<+)Tsx90i z3gZO26M1(O`D}3>#U@(BFbRn7XTM4(DQq~*sYo!9y038tv`9j<1x}BHnhnsg%%HZE zAtH0B0%#fMHTE!!XaPtDxk)54d>0?3Q>g7iL>GcLr?EEpA!4?++n_K~LX>KpdxDdz^7RW2_o?IyUQNJQ#1krpez>oX%3RN~rQnI%xTT1!V8V4_Mtvye z`FL)XxET3jOzPbRsjwc<{X^LDN>RSryqLLB-y&PD*M+cGL0>}=qVx>=i5(sRs!#K zy;My_a3Jt&QfwqnYMu69kn2~YnSoND?gseMs?e6+b%nf!% z^w-tSeEtv&_?f4m3azF~tm;}++c6eW-!bOUR9h6)Uqcx&rV}xzFnyRqp~JvBD?dXX zSYWhDEc800_9L%XTD1}x{V2wWik6JZecG(@CrI1s4S^})s)%uGD)09jSlbqpB35X) zWxLj`y#`YjmzdBr_jE-t5ipk)=wG2HYvPQhnvv(Ip`nj2va1y98)J`J$Zw=_O-yr5 z1A!QGrdnhVQGSxDE*H#u@0>O5k`8VAO&fub2bZt|d#Saf>Y!YD_g#nmH<%D2@1BIu zdG_zG=~B+pGBRdMs>xZZ`!tVHSln=~ueG7V-x3O9VLAys&=$lz^@>Ife=5QS#TY{= z#3(ZrK(K6Gpy1v?PkwD!-qkkIEWq0 zIYS`b8HS!vGMyTfDnWYWY!L%Fw-M_&( z|9L!8#^6f^MJISxAqc6RffA82s`e5VlJ0ft&*~E=j>SqXbSQ@V-WMnIbc{tvYt$#2 z$5L&f$2@4lFbBi@&&w|bN{vpjH1OLv2366GL$|*>b+b{Ht9*Av7z= zBI%TV8Ed{dEe4ak5N6=O1BkC==zh!+Ez}ArsOx$uTf%eiI1z?C8#5;~A(;-@D?P!! zaIjutpoi=}db~lT8tgT(ttek^q@Y0~n^Z^O1Hy0I+M|eggw)TH5|Q4ipBXLUWkI*R zxE}YlBFfcSH5kX4r7-(S3mC;BN$ZA4z@g4>V(qYIyY$vjk_re+h#ZLo|Sv3ubJXZ~Q-Ej+wu zBxdvNHWr!FRJA%Jl7vw*x+Jp~M*-lbX7r;*oT8vk(TPX~TkQvV>Qg&sN1?X1_mGtL zymnQ$aZrQ@>gM8EpH^GdNt|AJI)%1eeY>(8d8$8I*DapSP$v~H9L?BvJ!zkHt?&D5 zeR%zvDe6Sfc|3Ch9z$holxeE^J?SAu8a*%=F;$vaihq!mV=^z0QO0V{Z>bj0znQji zEfMPCp$@&S!ZBw|x+ZYB^~+wckMTN@V8F|Ku80+B)+LrHM5)C3jNDU-Hr(9Dw>f6# zFXpJO1(u+STDiC$N>VI}-ZBQ>qPFHaS|;pRwl*Sy0kuH&2px7Vi$VkdZ4fgWVPm9B zQova@`T%?(gHH!2(GB%G)(LR);XwmX#18H5$Pg_h^&NKOrF6B>wba;P0-}jw%xWSX zCuC8O$&EXL!9)>-u%-M$Xfdxk)fX)u(_Q#N`5%V+G@XsX5{J);tuuo{NF|M(s>)zx zP<2jfVjv2Mv+Uwo0*OsoM}5#CXPk;N4)+YQh-zSA;qLi`+@htHq3aRCX$eHdj=xfH z>0=oRm%yZBhMQ0ggrW%zB8Qk@NrSzKQM3VOwVA(+%h*!7$%;I~B?p^yNl}Xm|K_((wjY5y?>3*Mwa7srtXKRA{J&<MI`#w9vcpg%&7nfq3FWt z!NTXKn9GO-`V?~pr@HiZO~@k^ zD3T8Z=%nUxY7=_X^T^g1@{>52QYI_{n)HdL#bn?0u_j{{*K^!4^4*}Up%@S)S;pc- zdZ^TLs47qJb8JMr{XX;k*qP_>equTKF-t__R22ICJ|INh_`8Rg*^{UNLjntH3bC(D&IrAiiFL5Ze}sy__EV?MDUXNej?iIc+%PI~5&&x;)RrHTKIDwFb(_4IW5?1NA5pz?l#z`G;rNTO9n4}U1g5h|IscJfzYfgUNqx~u^P&t*rJe=aC<%7VM&RR;4 zy~rP@R#n58A7&J$zEq*-TML)C(T)1NllHlkhKoc}%s50MsCU4GxsEU&yUa8!i7rvH zSfy~FSbTk2b7Fi;#g+Hz*{N`bNGj=Gd|hanr5>4*W+P65(lVgDuMH75IRsw45Yr>8 z2=%m$1*!(6m`vnCdXfg=3r-c~ zN|thY;=Y&j^OCK7x0sqmkP5JHbU)X2Ye930?n^6`PmwGMq>&%?6w}b}2J>j}DPCy3 zOf{C@M@3@PC9wQ$4K!6g(foEguO z`X*7NMH$8@RJMW&jYf9Xv^sBQSRjCcUOpApfJv)Rf96&)^c>E2Z}QD~H+Gl{@tXr% zjEYIJf?mmDT~+~9y9!>u(Imk2L+g`DIoOO0kcAIIVYQDo55s9nGkTRq+zR%3F%wL@Vzh+alIpF{MHZX+B14KQ z?JOYQTEn0}dx_zKSnNe^;M@7VKz8PPnM(}P%U)r|D=TDC*srBlG$8>kw|rj|3wsXL z@FeKah2vpKgRhL6XmqH@?eq^xFm@LR#mG9V==;Lz`KXTMvN`OQq%JqJZztf7OSz0# zhPNNgr_TLr8yt(YHZWy~V1X48-I%h^Mz7nBVuL$W*Z6$*JM&ZM1s+?*lwOG5VtB$s zH905N6y96h_Ly*$fLn_3kWu>xo?ekma2SZ|^n1R(+=SMnO2kT+Z62jf`~^_1X$guq z0G>BR-WaLkbJ?cgYKzt0PvsAzugW32p^&BJUt5pqp#3fQSn})8bIpT5dQmN8W)XeZZPA;bsYi3$%$CBNY zhE;ylVhoyyF016&2DRz%49k!s#WS?EeLX_-OUU8Av+&EipDVLw@xi;0t2CyO<}%|W zM15H|LC9%2LOgAs3>|7{g@|-29fzH=a7i>P%I#@2LSz^8unoRwUG~}FX=r4^14h~6 zx51;aXFy452#4ab0=`ILDiv-n!c&nD@q`c<4610Yfc+Qw^Bv_#ov&^Oa_%*{)&1cN zrUx|k->4nU1r5pR3996EHZX;F_ZRY zl&jL4jwZKV_0w=$u7mNaesqKr!gAI=clweZ%bn70eZ-@A|aX;W}$Wn@3Y>gJM(pC@c4 zudXG^hUKQK>Yxk1yT!fJz4ur2)A`_xOQ*Xy3{sAkv5ZC_MgXTP_(?_!YWv|0zJqFZ z-Dl4qZSH~$H)j*ZJSOHJ-^kyH{AhlVeDh1N-6h}1!(RhQ`vGzy?k1ve%Xv@yLIimu zJA~~-tT2zTSb(8j&^#tG?{#DDkm=2n2X)Jf^#fcMoPitAG*=mJ5ISUq-3>kTFtGz^ zw+)wh>7NIVz{#KwrxeR5in+)X`>U7ix?qtoZ;?<$|27P7yku2V1lj_v8ZvH{iPJg! zLwtiJZ(@-;F8IYjwgj4vF)YfO0{y8Tw|M&6kWKq~x3 z^Q^A=TOQu7KNAG*=`?%uz>X?#+Ewd7R-);J3ipF_>(S!ev5}TO_?d^jiY=_hcuCKp3V^h-vv*|6237yp1|sV zk#$bdnMG~7t=P70+qP}{i)}lp*tTt(72CF*RE(~_$LWjibF;>}+-u$JvEThXb4FaY z;6&=%^1o8B%NhWmgcqPp=L7vOshPj0avfSG1494cuE; zvn!@%CHpxw_RT;?KF>yY8;rF=V#|Lw@`^=lW3 zKY`@aJufQgS;bzVYrGi9T;7TZylnt5b`TLOti)mM4JLM=BkRRortvk~$cFXrmQ@>( zIw|B$4=tnnop2;f10KF5U~kg92smDIkPn+ZDIAXt@MoO>)!VrDqCS?$mtlF+!LSGO~}uS zrMPc{6G83tR493>DiW_=RoUDSP)pbGo6}O~%L;n2FX{>cu_xvgcYX${p|hK?fBG_) zb4jx0_le3_j`kM+f%WI(zJHK?i^F2)=P==77Uw+5xU_Z2Ij`rfvWlrn0p&}hBq~W? zA+jx|Ip`d@px0;pqTleYkhx&j=j(G(xe&o;V3_grA@fhf>7oo_mQTp(atxtXUR>Ei zKkzzd;A=v40qS0Cyi#?6t7k2DK>PxwS$jC0SbhaMjE%d3-B02RkvpQDi&^8pHe{jC zYmP9zcrqk!N&hT%joEa@sLtn*3c4pS_T*I;c8!-j2|2OZl5xz1kJq>`tcw#6#VtsT zH@*7g@{8-2#3jX@sT|>S=6y=%l_Y;hWj=Xsg!T&hK8a;Y7!-<}SGmyo#-z@zp2NPA z*A&^$Bl?Ed7T?aZoP9hAzXNSc3KVl3IMaMZ*cIi?ho7ZALA|3nyG&|r??s_G|FFztz`6!G_FxpLwv;kJ?Qs(g!O4P^YzqNiF+{yIY7g{ zwbcL|6!jh%D#(kan@sw(tg&cInt8Iw&i3U^QQR?#mSK>F`XD8+NWq1fx@?Tf9{lM; zw-th^uqBETB|?pxAG2f%w1(d*f-T3-T6;B5$38`C9OALO(gJ9h=lyNY)b`wln-fBk zC@C}51aFT;ifKOX_k}KjQaYe=Mn_-m7Z=1~hu&zIpNl~g@n;7LYlvh_lnZjSVV1Q} zF@$f;iQx2OM@wyFuI?xu@KT3gZGvvknGX7>w`IrznXT_oZt|42NHyQ=*KZ7}7R_-B zhH?PW3N7LggyWK1K~(+xlWp4LeXA(7^7m;!$%b63X4~bOf30w1X36pNYUoc+6P*G7 z3*^BJ828_eC2P8iJ}wd=UN`+jOdj{d$)(NX&MyM0dA20of`Tg6W+jnTtFyfEdyk}> zjYQ-zwuP9^OLI6j>oaw@?b-q!HkY=ro8>unxa+w&dARMmf^BRsNfB?>W(|?JQmn)K zV1-kt?Z3%kxl%(1KW?wG4>p;h-tr<0fHN|W!4@?zdGx)X^)i!GQ5-KNf&aR zWE)(2>oYyLo;-6qg3|LZO_4nES>2dTwHDu6@4ltERm+q6ny_Al#gC$}@1g<&)+YnF zui63uHW$Ja0y1o4Y-ZLYd6E5P#VpnyTNS;y)>TCbI5R6snq_^!DrjUHg;_Rl9Zi<#Ch%fxSoltMnhQa@|-A~ z+=^mkSnQ%=Mp&sOpfk)Ia0UveW(9~1JHh*hpn+4fEY}uc!+x+XR~HFn?L{@X7K7?s z(MoF_+)j7B%;$pfy@ZoteQQ6ChuVbdL0 z>7TZt+lra}SUbNXMaV*p}Zhc8^zB%Q@n4!+49?mgDLQZ#8*Yu)E^l$g(Z#uz|pv(FQPW zO2wIUok3msX^-IN1GQ#_tp~fHc}L_9X`hqXAoTpcF40*dd2)N^+#YzI=evS>NA*tZ z9nLMZZz?-4yTW?s+f?wkm}Ls)o84%_&=hz^#+lMLFIuCqA@+`uGpTFhx`I<5+A$TX z{w}<-ZA~p;U+cPZdgkv+^&PV_CurzeFT3)4#_~?~9nUp0XwX<+UHic6^_~45@-u{3 zQ`nmHJIT1x*h%^tg=i3XRdfr88)2>wLE#Tp;m>2ypVaFP?0SQ~*|)f7|0K41pz+Y@ zjchw?dwBN2x$P%7zB zVHUsJ8Ex3INWSM6C%d&)ecT@<<{#7?mB6lgqde60i+02!u+<&^gPHZFdC1N`)1HQb z)AieF}+lXpPeJ-i&2*4g;#Si9p>Nt2e=5%zefH{z3d z$*F(C9jM^0b`Px)FzXQdCc8?_Kj{jecikB>>#8?$+R=K4qSyBLR*UyZx{9xV?Dabj zw=PFd;c{`>dtqq?ulg{##xuNTzq-8u-_m_FgEhT#zPWx{UC;B_zD!1^F5E{9S(>~+ zCL`vEcEyY93q`tsM4kll`VIMP1jq0ff)EhGkmL>|iU(-ysS;=8AHsmyk#49$AFk?S znmy!RG45>h@bA2_~Y*ZW_RtlwZvY5Wtm1`LQ_9{iJfKFuDu z{X=~MZVm2M$2dM+ANctF5A5T2U$c@Q+WYmXHB-ABiYX?OLbVCzoJl+!U9$>^H^&~D=V~4sV`ROoVS0RXm8Kje z1dy3xC)m9-^~SKeLSz9eTHQk$S@|r=46N*zfOA z!d=MV&beRXYhUA~M8_)7gz&-+(EYON!N0i_zrh^7$vj>;<`Vp2w%^fCPU13nImUhpUAFRl#9oTQ&!}itDtG0U&UqpB+l(foj>f zhv399+NaN;H=}Rr7tf%)WAyKe1JMDmdkWt)<9h;0GvfXW)0mR)*q)@bn6k0#(Bqm# z5!qI-L@}d`P8m$P+Kxr->7-CaT2A9 zgZSlN3fNNnofkIr7~!5J5gdki*QE0V$3PSYA>T>0!1S3{f^^63zgaPmPRl3iOyqU6pM+cS*RlK*Na6q`KDK{aeehwdR$0V7g28}soLwf9nNvWElLn~7d*f4 zE^#T6dh>)oV^dZHcn^|%-Xp{K7w0gr-=#%%0cSjLU-8*uehYd6)@K@UU!?^C3pOa< zjYQzsh1dt!PL^XPW#W!ICFG;bE_!!iIbj)87PXD2)@=yyWRx*2D$*u+DGN4u4Ko#8 z*ehZp+pI3hVO{{q%e3<uJU2JF|R!ZM;K5Su_@+0v3F#UN(b zu_k(ohrGs6YFQ0SCe4ekVA70vj#4-7aK`AGRFiXHS&!+BYBx@5O5iiikbK0zjM0pS z9`PL-KZH86yp03M{ju7V;~aUeO}C`HaoiVm5B0e>+T-L$EwIePrA;tu*zxnDqPJZ# z?g{m5n-`p8_@0;#jXLMoWb9e-3*52e7IQ{XT1|J-b@ltUXCK*C3|dsHb;FP7LX%O&>>IARBA@*pB(v z#E~&#)N5P5^nGyVhlh97r~;Wo`#vA`6+!B$w_9Qf>ZNu5q`^BA!MsHD5Dgs%%fDWo zUqJj*M;G+7{R-;@9}v}mPwsrkA5B4sy6;$0`*qp@J_N2oq#HgfS4+HhferkjC$g`y z%J>R=?&lB_AH}F&p<%G|Ggir@f=n6mr$)N*SFU0T=~E!aIu$d7LI{uPGQjXBxB?3; zN5=Ok$vZuony;PQXmL$S*R!2m$a~fF?3g+fchxZ#&ajq@(#X$}1?K;Px}t(R@Vx#d z%j5p34gYr#Rm{ohf5Q2$>XGg!Y8ZX93*>SjF5uD$ozVviz_xt|^Rozuu;=*$tTj^Q zpz*JX-K4=u8H_AIL51zUQ8YJ~0tLAsr|q{NZchvjZyZmr-VA}VCFG}DM=v*BeO=uj zH&Yt^-GA|szLNB#=ES1Io{LBB&x_AJYcUGUqQej#i+nat+K%i~UJKzR*b};^rzS)B z#lJMuWn}7Qu_zXuxl{)ITDVMh66DR61_O*mK${|qhml$YSXM)o#F?5P8BJ!~x8Rtu z8KWv>rQd#28Juj{L4~2N%2HdCr!dz>t7LR%Op~gzPNI3!=Z(>v(j*5OYk<i)sM+GIEjt%N^3>k6Oo8Y)gZW*nTndl_2N(`_6$DTrIW^ zEj>0mv1nI@OC0v=BMR*Cc7X!@LEx8=Xsg~lF*D~%l%5r=XLuf50I zDoVhoomwzs6H~GvRP8rz!s+uX4lIBOS9ATGHnA1tiLoS2abzo6gbdWw@wI`)(36M|$Dr3`O%je76s*z($xp+IHEB7-IIkud(zjjC|a}#8p2Ps`z2#%4_|}M6t??ILGKG3!7LM{Habg) z69XdSQUZXYvq6T(Qbr%gVlrG)mYt~b#mEcdeQ272oNAUZcD{;jKBzo+*emVhU+P8Y z#=fSXgX>HUjFRwdBuDi4Xtu1DB=QntLz0d<={F>JCX+e2;byhCh`S9dCVSKc&n%w2GvP~ zXA1$Hz>S@@_|U7MdN78V^otPTLg?cU(gbLP-7(gq4|3mCBI?8OA`dS703ho| zUJelTA$ZXT(|#FX52gVb;17b|p%M9z-Mu6BLcd-h_JY4|AmT&hLhi%$Kb_n<^@KdbrBW4*Te_EK2?5X554nC%IzXl zTtX0OoQD%?T)H3c6fay-PeGeP6(l~>i#5Mc*7hi5J_FUv^A|H+lQ1{Oonv34Y!v%S zXSK|piC;T!6!;3UY@{_yeEdFXsk0RN2!prURhIgQz1Vm;0thJPe@Rj_=baTl!{;o> zCn@e6m3j4|F20&Q^wTU|8<)$?_JF{!-8YRD=bS<)1JhXj)@w%kN z+jI!qusA!y^2(RMNb+mZNSL=KnoxR2_|j1Nj{Dv%@qtWc9?dzWBmg^J!}8Mgzu>*) zT3%G_5h`)bnzi03wSaklv^XDmneEaK9+UdO68j2WIdGT#2Vr0JQ!%POZ!b)XXQ=RJ zsG7p+DZDcHLiyii1?+QhxQ?hU@$lxbt1IS z+2;bpR|>%gIR~}30s@Pw_1NchSH0lQ0LIt910}a#QUeh)A*GTG(-kRYb)3b3>qlrY zs*P7Fxotk=r*)jv%Y7ePY8LFUKmU$@DI(fLwOUlhAObfx-kn(u)Ox@ZRUd*6w0#)! zHencL+hMiG7|u<&|r^mk#R0S;PLobw_^r!=}VA1Y(J(iiS?1wZ^= zB&VsUA^+S5#`64-n0|!;p}1E(i0t^82mXr9{E*7xF4o618M{-zfoc{<7&TcZmqmsf z@^Reg_eE5~u8|&bi_GB*@8R5g=+bE6XOCCm^f>m4x5#9>gW@N<@IHP@RKu%PuaSt> zi~fPg8JBnW?1K0`PuB%V1Bj^{YquE2adqF%=}kI%zcJ4s8Ki#^fu=ir5-=7d!@eb+ zm60YWjGG&XCtn2=djtQGM92@lI;>l#I0H$_YzUOO-vc-HA$>jDCmEO6t)sr*bQ!H+6a5ZDe}iCtVBjWUm`7U|Y6C@P zj-XK2gH@&#%M^b`Y@adfnQ@$ z`6@8xcS7!HiqLS;yFS|=o*)2pMIO_D=A~-aW_kRn-cXI$1mg|#w}vHWK0y-NPvVmD zqi2~?Wo!<==wzFH+9NCEe3~P%@bjGe3?ZE^C9MzuUi6+eZKDdhOb?ZT+lf58Z)7iu zPL9~|*K@~GAxBt}p6E3Xyz=8P{|q|D#V?bfVWtRSW(*6B1Xx@FmY#52o_I}8h-?{y z7*3D|<2oL+_J`J7LH4HDyOTAu z?sLfvEA&tQZ^H_w|M>`h$PJZpG=~~2g2uHHQ+U)!(Ap7r|~GY zrhh?1SV>wjQxH;4G60dW88HzKs<;D6O-QLepO6^664f!Gu<##I8&p*h$$KF7UA20x z;nd&!W;=7wd-uhk;QMA~%96$TWGaJ&jQ{85FdS&l*eD!~63B81@Dp@{^~$nkU<8y9 z;OjQf9du&`hSt<+F`IqOP)%e=Gs{p@UJLaKGl3+KiIS}DMsUkO`2g{b1W?a4;A$fm z%@2bb1(&9=A_tSU=1d8ds>qCbK$f^{i8U1))|`B_rapb8sT`Veww9jkjH4{4ub@iT zI*~wj_Vja2=|jY^xjQkGs_SenY$oq(uQo&nV$Kj0_Vn`{!1Y&m1PUY#_K1c*`_q6n z0><~dup#1{DcPi<=$Nv$+a)2-b;*#OFhXHiJvmh)B?X<~=;2t=gjler=KEnGQ&NYe zA;dxDhTI{*ms*+%lF-YDbn(OF!6W;i!S zv_8T`*xU{N8-8ZO#Dz2HWB}zM+%(RdOo+kkf(%ziMtt<_bE>+a8ZgMM$z(COcaMVE zAMI)yJu@>tH9LkUkQvn!B4h#)H#=oaNRt$lzjdEcoh~Sd%gt#4I=NXNPRT3at@%Ax z-O!;6V6maD(-XEekDH$Q4XFStG}xGRIA;-;!^q5I&3GzBEco|(Gr{fZY%AMm2OHcn zFg|)d*cmaI4;3wuk=gnPl*E2|nEY&=6h4>H*youP#CUcRC&yC^ww$ZT9yFcP<6lG* zNU&)Tsq+35BL%!(Nrk!H7Bv+W)CCfKLYfAabwhQ3i<&PkI@AnodD&|`b|o@(pW#Jg z2{ZrX_-(|Q2HIMhhGwwP3SAwm5IKWu_0{4HWd8UqFsPEz@qVkZk*lvI&R;P=KdCjQC%#3Keh?IQzV z_{a_z=|tG~l_sjFJgMlH5w#e^j0p<)@0E2(+*zbubPE!P^dWrgPRJHy5NH*46Fg&M z4=L)|x=fy?>gGAjLSS41JKkj@hy)ci#PVkZs+#e87Ks2~ddf@^D+T_O$bAU3FD-8Ne9XDwP^+!dEH<`g@Mu z`uFiydfCx~e013nPMThD`YffGe~O=CSejdvlCL++gf0*o`JSU0wiHU zs)E12JJGC3UsY8+sj0uw`1p{$pqVWCuzTRiH|DvMdSL8`SkspaClUkeWi_6N6Bf1l zslWchh_jPjz=Glrikoj(RlQ*4L{q_ber_7*+hc+8!8W^A>Pgyj7EEeWWm3eN`OR=} z{Y*6q5O%ygoNB<1*DMqx#;V4otWa|Lm+t%;iV0BuPxCilyRCTOR)s-&z2f%j5 zq=sVE|NRrqB+LQcHn1vNVlY@|)9gQFUKSEQ8&Srs&^(~^nu0Z$hpgFe71{^YZ0prL z2Rt|w3d0SLR9Bi6YWQoOmKw7ONm#TxDc$&jm6-2_Dncv>v|dY6STd_&ATvhO2)`(a z6abzW%8D?5KV!a!t*to5Dv2DKqZUfjm7X~7Sr|G7sx3+>aRE~hLyD3zZy9Yz`kbX1 zsX|PDAijBWe?%rn`I@I@7eG54)ysygxDgTFZ0y=Hnpzwk8ygcd)0RMpl&K@hqpM?5 zD1l>H<=#~U%1nu#805##9?+a1&n=Y+N)13?V51#|RJ1LQl6Oo1r6XJy_A=zb4ozow zYLH*n0fykDD^~b7saR-EaKYQw0LEz7%8n|KUfFuc`0fW~7Y57~(ZIk=kfVc2YpwtK z%|=$zZpRvT%`Pu&&W;9loL!f&OzfB1H%QR`cSf99vNRMHE(?`IJQ9{<2x&O2-$wwX zAfqh$h=eOq*N&)Y&}vLfhPp=7v=*CE!L z^qfTN_{n2;m=qKfnks5Coi3_6kQ7A;a)#VVzWQG|>5t?yJhdcmjvH&q4pC~&lF~tD zRo+KbHRO)OJ%G0Pn{|53J;0cGQ71<9gt>=}z1X(usaq!h}Sti&~UOI=t{sQ zg#O(vvYN=95N;Du6*bia)WRg@h?E3tBnP=8YAa^1P#PBQi_1sEQXD(EAJ#KRbOk48 z1w>X)2)|K@I16^;TqN^4n9O=3=g>@k4R@2^qS~OK9aY; ze!OAc6S7B#*t?KaBEFnG+75)xtJxX~VgyPJ=!X}dGW>zas<~?6K-oV5PM6vnrk-Y<~ymOsihyf zh$FEko%?4R%$h~S1tx!Q!O6cZdobuXG(KHC2C36;+M$G+3RCMn!xew>2eQcSsS7Kl zCJj?G?eQwkJ+yByw)cC;B0oK1d&Z06a@%70k5r_wk(IuBA9FJ-6CWMoTgFlIQ8$*Q zq8HK!{@_jGO?vQeMPdugHT=FIz1+stAb=<8Z)MZd;>UxII6tiVm zS9M|o#%s2?D<>@-%nO=GA3ULZID5#yHKH?EbO^VqSfAdJpNPu3SGmbX{)uC=viYbz zROS(n$Zu@spBdM8Ctvgl0+^#yFUv5PXAF^_(}F8=_z2e_K_N;g+`>Ap1HAt5yXR1t zDnQJNN`>U3hD@yyu;vNnDQv7A_x$ORO;XKR?kBQa=|O{nB`M^E1~dI{LwcSo^#i?5 zx{38Uy#WMe>TH>i25NJ8?gdiFEh?~uSMB%1W<8^`vB3{4P2mM8!>?|wdu|1dqG*+k zYn`AqZJD;vDu=>3>0m_f<*`!j>D;6j|87&n!l*jQF4AkQo}wWG3DOY8wWwtw6;wO) zgBkT>u%j5YneL}RD~CdxYSfUQr1c$QJ_i61>1KM} zlANY~mRRHSMoCL65)4x{W-wGzik#m|)!sz7x&hGG*cR^EUkkA$^+M`N@A#I+4OVtD z9S>Rb*PzvVPZGS zN8+lmci85GG>qtVHR6p+u_FhQafg^YOx97-LlTIQO5{|_i~4J0ommuRxU`4D!`K=Z zIw0c-Ni>cm)r{Jp6tTBN4z$o?&FnEx(L}lk3qY_rn$t{=KFj4;mK|6Bkf9Axm zXGnD@6>`jHb@0$onpy}aIQTO%6tQgw4V^7E*r+qLrXcHq*}Am;9!!+Rty6R&2vIV^-yeA{mUlEkz)xH*?P*3gR9r57~}oVO)N*YI5s0eP-9W zD*UoX$st8J4{AlJ0k{pFtJ4Psh?`K0-3yl-t? z@)wh~`ELrU>W6exJ^NFE?5a=i-X33AfsZgeOrr}=)w3Gjv@65g`g=vT}G4}l0LHPS&-I@3l zm}E-3&>W8p<<#Yr%qy2K4O$&&Bbq{NH@NFoc;!z_!dobd2xMMi_Sy~|)uLv8(J;nI z!@WV+1X1E^3D{q0ptlPOP##&@f`b<3PtL&F>SWq>macHIYRRnTFb0xOGA26?pex^O znfkBEDPO);;k>>fYYI zF9w6C1=_wpX-?G}2bfG!87>p~c{9MFy!^I0$e_)o>LJzfLr&Gz-axQ0Q7>>rS{qPo z66d0AVQpUKK?7HbbAyC6wAD~a6N&i_%Am~3tR~rt zplOFE1znknO|~}STx$+P&+$s(xD7EoV(3jxs=@u$-qKeY`^+6p{WG($`I!E2JRJiL zpteO*vnd52PhS?0@nf})Fu?7$^S-!;{a;hXF*5_j2-8iCKGE{P$iLWj>G zfz^398S&ImmY<`sU*?j9PsUA!S)zxj$-i;wplvR9vn6o`0YpGyS`5T|i7-3BL(+k226(aMYMaq>=YNEQdz+kI% zG5R$Ky+G-iWVv}bBhh$&=d7>*OfuRNsbiF6bbf1 zvBb)EzA8#XJtIOXCPmz=tW(Ph5^#L(E-^NoV}Hkd1}F`owF?>I;fL1FrzP;9yO!IJ zz9A9cUYJJb7GV!W5c51M(v%{fr5ax?`X=DD-wJzss=v6Xx@E&>A5L?+eKh7wq4gFY+vcKs)7gF2P#67-mUcPk+U4YBIACsmsUav!wb>^_zULDBKR+$cVEZmpiaP3#2wN zqzdl%!f!#5euyq1#5#KPT*#VVz)2breGaE)(3RGT-JGY@2y5a_uA;me5~6ppdJyi6 z+DBzDp8kC!8i+Q-2F=cVbNE{wXvmD)0XwO4fx6mQ8RBt6b5{Lw9)Y@_y80iM8%>PA z7e}VTpa(S+9=F}ZP^B5qEOsl~ctti20Z4z|=yi4-2g4inW5lvI_%iJXRPY&H2Ir?he>4O;goYWF`6 zVoJwR4O=9YTPTw~g%dpu+4yQV!N)R%6KTdB_NpBOsUH$45Qd(Hs&CA+2*0TjMjztK zoxm?V0ID5isVpW>NmI4AMgLa%`~R%95C6S?`tSYUq9>8{WB%DVrUhD(Y4(K%aqbz( zKRA~Ek`#;!x+FP(;-u&&Xp(7`g>iB25y>*_b5@cZyW%%-?jcE-XqVCibZpCng!h={ zHAxFB%gBUO>~ov+p+#o9RcgOu#lU0fXFupgYDhsiK^BY|2x!AM{uca`Qs|a?Lbd8p zv5HddcJ5_e7#U@{76;qP7W7(~786gc%5A5yWQsMOqm#(zi!I)y9&(OZ8-}szruyvV zo7tLBoOpI&wXt&PK~*5qcB-)aXryH3AZYP^(rU?;QKTwo)iu4Rmz<=}g5K z)hgv{<&er`rIbtL_)1xOK<@TbfE&!Lj@I=v=n70%%%oW(pD5s{Yqh6Z_y(7#GpmLWS=!nJY0wTo7@D&!{4 zvNdS3;%4n6&Kc3aDRbxrW9gU<^{_YP?VL1-mRtR0S}-eatha(WseMIdU`LwpRUh!D zPWcSkwts%8f?G^1D*2d*O^nurCkDam118J&nWfvKf2Apnn=wjFdsw@DX^=LsUq>=w z`g@rE&LCA^4*n7CC*{RuX>|mB)YO6Y(3$YiNgtE=mcXr!{i=92$2i*CVA#hEEa&3N zdr4c?cef;7u$qDWC{^D1EnLi( zC~dWm`8cJ}ly_JGvA^Ek?B&smt}nTbz>poV64xIEvH!RGh~skKMH{a>=ac_?X&~J7 zZk(S~Aj=)Gclh>_S3Je-SFc#-QJzbt*J}y>%<9l>%N@k;4-)Au10qMb`2)ytljRkZ zg4FZ|z;qQwtM&q|tAM3jJn6~$=4w)LFe%rpvO+TVK{~2Y?O!WD&i=5+_|}-?0v+fFs;;mIu%hg7e32$KdaTF3&?!LVP$;vu*cLgQ8XWZ z6K4oi)g$5kQGvGh3NpdTX5sth>OUC5b;$Zm3n^NY9^+`3Nk@RaV880Jtyr#6J zM45GHe;)$>kZlBizwn`7;{w5yd4ZsBBmjDU*v3yN&SQTenKu;xjXyY*G{4JeT^BP5 zI5k*&$tw{~pKb}}?_@2-im5>A&l4)MdR?mU<%tvr9zS;~ptS>Qy8-fjTEXDV5X&zX>O1@s14BeGVZlA?Oqx$xtVpiedZO#!Olj zI|}O*Hq$64jP>6JiXB-?R4?&|6WkA#jgj49yPFf{PU;vW(+x{ypl305@$A_mB|w4Y!iN7S;{gTlyUPhueK`qWgp4G zPvsA!d||sy6G-o=PRV|?ydtv)FEvit-zC|I$SD?~D-+JbnNHGYK?VrNVn+23iH!1| zT9m5#NYp7DA^$nKJv2>nTL|2QrBU5O>s|Uo?;WR~L^49iY6?QALJG^E=P`+rB0rkg zr_F>#q0F1EO`Q*!TR(%`oAy-pw|v7r2jmp721z7ifm-%^pdu%`9(f?2KPZ) z>4w~SrSV0ufxj9XoQ7U0(yLj8-6HF<3AKh!7WG|~l5gqdGJ7e{QfsMeEP`AXpWWi~ zk$@ae5{~SL86#eD#d!#Ay8h6UoEB>jnT}l9G3X-Jy7{||JY%p88;lc6lbk%OwUe{6 zjx5iZ)Jbfk%?+LPiBRKEHU-c0a^qyTvRhVg;~yW@=gi#{olO5k9j(mC8ak@RS!PW; zlMLFnmZh<4+Nz`H)Ep;@Nk6XThvIB=PyHKXPmvodE)w^)e-q7mABq>!FGqBM*FOek zeBc!WHlsTh)^P2}xM4a08Z!hVU^G5s3;uHf7kdr?-v9y1Ez2PQR*DZEoe7fo)~N6~De{tVd`EWnw4u`^vg~4b@rUF9 zIH#QvUU#bhV_t(W-L)(>851?>$yjSGaIbd|gb)EViWd_3Sk_^Dh)@h4-uDQJQ5GMn z*`i-`JCQi}rK??*VmXes2O$q{=%LjS%*hjGvoZ6NQ7 zKc+9S`B@lYqTn;cVI;SSrg1dn=pTL%Hba9DO8IbC?pz%5!w>=q1)$tyH^&qN6=WBW z%M9B;VWSiBL=OG%YvUCLP-UZzlMwq|YCoZAQw+i{k2&_h-&nUu`rvSm+zlyG36ge0 zlG1xA`)1j$7hM4WFDla{9Y+`iLX28s8l_Xz&Botb==NJrT[v4he|Y}+uFm6mue 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

!&ckJYJCvG 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 r4q>85noj= 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 literal 0 HcmV?d00001 diff --git a/com.ibm.wala.cast.js.test.data/.project b/com.ibm.wala.cast.js.test.data/.project new file mode 100644 index 000000000..1c3abaf49 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/.project @@ -0,0 +1,28 @@ + + + com.ibm.wala.cast.js.test.data + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.wst.jsdt.core.jsNature + org.eclipse.pde.PluginNature + + diff --git a/com.ibm.wala.cast.js.test.data/.settings/.jsdtscope b/com.ibm.wala.cast.js.test.data/.settings/.jsdtscope new file mode 100644 index 000000000..6fa134369 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/.settings/.jsdtscope @@ -0,0 +1,7 @@ + + + + + + + diff --git a/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.container b/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 000000000..49c8cd4f1 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.JRE_CONTAINER \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.name b/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 000000000..11006e2a5 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Global \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/META-INF/MANIFEST.MF b/com.ibm.wala.cast.js.test.data/META-INF/MANIFEST.MF new file mode 100644 index 000000000..cb006f97b --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/META-INF/MANIFEST.MF @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Eclipse-LazyStart: true +Bundle-Name: %pluginName +Bundle-SymbolicName: com.ibm.wala.cast.js.test.data +Bundle-Version: 1.1.3.qualifier +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-ActivationPolicy: lazy diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/2.js b/com.ibm.wala.cast.js.test.data/examples-src/pages/2.js new file mode 100755 index 000000000..f0be7085d --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/2.js @@ -0,0 +1,63 @@ + + + (function _top_level () { + + + var jQuery = window.jQuery = window.$ = function (selector, context) { + return new jQuery.fn.init(selector, context); + }; + + + var undefined; + + jQuery.extend = jQuery.fn.extend = function _extend () { + var target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false, + options; + if (target.constructor == Boolean) { + deep = target; + target = arguments[1] || {}; + i = 2; + } + if (typeof target != "object" && typeof target != "function") target = {}; + if (length == i) { + target = this; + --i; + } + for (; i < length; i++) if ((options = arguments[i]) != null) + for (var name in options) { + (function _forin_body (name) { + var src = target[name], + copy = options[name]; + if (target === copy) return; + if (deep && copy && typeof copy == "object" && !copy.nodeType) { + target[name] = jQuery.extend(deep, src || (copy.length != null ? [] : {}), copy); + } + else if (copy !== undefined) target[name] = copy; + else target[name] = copy; + })(name); + } + return target; + }; + + jQuery.extend({ + speed: function _speed (speed, easing, fn) { + var opt = speed && speed.constructor == Object ? speed : { + complete: fn || !fn && easing || jQuery.isFunction(speed) && speed, + duration: speed, + easing: fn && easing || easing && easing.constructor != Function && easing + }; + opt.duration = (opt.duration && opt.duration.constructor == Number ? opt.duration : jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def; + opt.old = opt.complete; + opt.complete = function _complete () { + if (opt.queue !== false) jQuery(this).dequeue(); + if (jQuery.isFunction(opt.old)) opt.old.call(this); + }; + return opt; + }, + }); + + })(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/apollo-example.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/apollo-example.html new file mode 100755 index 000000000..4592a1a19 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/apollo-example.html @@ -0,0 +1,27 @@ + + + Login + + +

+ User Name:
+ Password:
+ Query + Update
+ + + + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/collection.js b/com.ibm.wala.cast.js.test.data/examples-src/pages/collection.js new file mode 100755 index 000000000..4df4440b6 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/collection.js @@ -0,0 +1,14 @@ + +function collection() { + // initially empty collection + this.forall = function forall_base (f) { }; + + // allow adding items + this.add = function collection_add (new_item) { + var oldforall = this.forall; + this.forall = function forall_elt (f) { + oldforall(f); + f(new_item); + }; + }; +} \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl.html new file mode 100755 index 000000000..ddcfd3b90 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl.html @@ -0,0 +1,196 @@ + + + + + Untitled Document + + + + + + + + + + + + + + + + + +






+ +
+
+
+
+
+
+ +
+ +
+ + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/15.js b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/15.js new file mode 100755 index 000000000..2de492af0 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/15.js @@ -0,0 +1,4 @@ +function changeUrls() +{ + document.links[0].href = "page15.php?a=ok"; +} \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/16.js b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/16.js new file mode 100755 index 000000000..1804cbf9b --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/16.js @@ -0,0 +1,4 @@ +function changeUrls() +{ + document.links[0].href = "page16.php?a=ok"; +} \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/17.js b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/17.js new file mode 100755 index 000000000..45ff0096b --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/17.js @@ -0,0 +1,4 @@ +function changeUrls() +{ + document.links[0].href = "page17.php?a=ok"; +} \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11.html new file mode 100755 index 000000000..f60dd5132 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11.html @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11b.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11b.html new file mode 100755 index 000000000..89d4c0a33 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page11b.html @@ -0,0 +1,25 @@ + + + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page12.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page12.html new file mode 100755 index 000000000..b1f0fd247 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page12.html @@ -0,0 +1,31 @@ + + + + + +
+ + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page13.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page13.html new file mode 100755 index 000000000..a02adabe8 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page13.html @@ -0,0 +1,32 @@ + + + + + +
+ + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page15.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page15.html new file mode 100755 index 000000000..52b2ad8dc --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page15.html @@ -0,0 +1,8 @@ + + + + + +
Link to be changed onload + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page16.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page16.html new file mode 100755 index 000000000..e077ba4c9 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page16.html @@ -0,0 +1,8 @@ + + + + + + Link to be changed onload + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page17.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page17.html new file mode 100755 index 000000000..154cb0b24 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/crawl/page17.html @@ -0,0 +1,37 @@ + + + + + + Test Link + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/iframeTest2.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/iframeTest2.html new file mode 100755 index 000000000..aab36ed5a --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/iframeTest2.html @@ -0,0 +1,23 @@ + + +iframe + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery.html new file mode 100755 index 000000000..2bae2851f --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery.html @@ -0,0 +1,263 @@ + + + + + Untitled Document + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery/ex1.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery/ex1.html new file mode 100644 index 000000000..c87bf9723 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery/ex1.html @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery_hacked.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery_hacked.html new file mode 100755 index 000000000..a37b6e147 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/jquery_hacked.html @@ -0,0 +1,288 @@ + + + + + Untitled Document + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/list.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/list.html new file mode 100755 index 000000000..306e7c193 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/list.html @@ -0,0 +1,37 @@ + + + Items + + + +
+ New Item:
+
+
+ Items: +
+ + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/nojs.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/nojs.html new file mode 100755 index 000000000..419b56373 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/nojs.html @@ -0,0 +1,17 @@ +My Page + + +
+ + + Milk + + Butter + + Cheese + + + + + +
diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/page1.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/page1.html new file mode 100755 index 000000000..b263049cf --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/page1.html @@ -0,0 +1,19 @@ + + +encodeURI Sanitation + +Hi + + + +
+Welcome to our system + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/page2.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/page2.html new file mode 100755 index 000000000..25e7f751d --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/page2.html @@ -0,0 +1,29 @@ + + + + +SBMjs Basic24 + + + + + + + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/page3.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/page3.html new file mode 100755 index 000000000..9921c0c94 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/page3.html @@ -0,0 +1,8 @@ + + + + + +asdasd + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/page4.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/page4.html new file mode 100755 index 000000000..181476a4d --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/page4.html @@ -0,0 +1,32 @@ + + + + + + WebChess Login + + + +

WebChess Login

+ +
+

+ Nick: + +
+ Password: +

+ +

+ + + +

+
+ +

Version 0.9.0, last updated September 2nd, 2004

+ + + + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/pages/windowx.html b/com.ibm.wala.cast.js.test.data/examples-src/pages/windowx.html new file mode 100755 index 000000000..3f508f7f3 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/pages/windowx.html @@ -0,0 +1,33 @@ + + +Welcome! + +Hi + + + +
+Welcome to our system + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js new file mode 100755 index 000000000..231105ae5 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/214631.js @@ -0,0 +1,17 @@ +// $Id: drupal.js,v 1.41.2.4 2009/07/21 08:59:10 goba Exp $ + +var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} }; + +/** + * Set the variable that indicates if JavaScript behaviors should be applied + */ +Drupal.jsEnabled = document.getElementsByTagName && document.createElement && document.createTextNode && document.documentElement && document.getElementById; + + + +// Global Killswitch on the element +if (Drupal.jsEnabled) { + //Do some code +} + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/Function_is_a_function.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/Function_is_a_function.js new file mode 100755 index 000000000..42206d196 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/Function_is_a_function.js @@ -0,0 +1 @@ +Function.call(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/args.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/args.js new file mode 100644 index 000000000..752133f6f --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/args.js @@ -0,0 +1,28 @@ + +function a() { + if (arguments.length >= 1) { + arguments[0](); + if (arguments.length >= 2) { + arguments[1](); + } + } +} + +function x() { + print("x"); +} + +function y() { + print("y"); +} + +function z() { + print("z"); +} + +function wrong() { + print("wrong"); +} + +a(x); +a(y, z, wrong); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/arguments.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/arguments.js new file mode 100644 index 000000000..7595f9c10 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/arguments.js @@ -0,0 +1,22 @@ +function f() { + for(var p in arguments) + arguments[p].g(); +} +f.g = function g1() {}; + +var o = { + f: f, + g: function g2() { } +} + +var oo = { + g: function g3() { } +} + +// at the IR level, this call has three arguments: (1) the function object for f, (2) o, (3), oo +// however, only the last one ends up in the arguments array +o.f(oo); + +// make g1 and g2 reachable so we can check assertions +f.g(); +o.g(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin.js new file mode 100755 index 000000000..577c8c020 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin.js @@ -0,0 +1,33 @@ +function copyObj(to, from) { + for(var p in from) { + (function _forin_body (name) { + to[name] = from[name]; + })(p); + } +} + +function testForIn( x ) { + var z; + for(var y in x) { + if (y in x) { + z = (x[y])(); + } + } +} + +var obj = { + foo: function testForIn1() { return 7; }, + bar: function testForIn2() { return "whatever"; } +} + +testForIn(obj); + +(function _check_obj_foo () { obj.foo(); })(); +(function _check_obj_bar () { obj.bar(); })(); + +var copy = new Object(); +copyObj(copy, obj); + +(function _check_copy_foo () { copy.foo(); })(); +(function _check_copy_bar () { copy.bar(); })(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin2.js new file mode 100755 index 000000000..22d7fd7ff --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin2.js @@ -0,0 +1,37 @@ +function identity(x) { + return x; +} + +function copyObj(to, from) { + for(var p in from) { + (function _forin_body (name) { + to[name] = identity(from[name]); + })(p); + } +} + +function testForIn( x ) { + var z; + for(var y in x) { + if (y in x) { + z = (x[y])(); + } + } +} + +var obj = { + foo: function testForIn1() { return 7; }, + bar: function testForIn2() { return "whatever"; } +} + +testForIn(obj); + +(function _check_obj_foo () { obj.foo(); })(); +(function _check_obj_bar () { obj.bar(); })(); + +var copy = new Object(); +copyObj(copy, obj); + +(function _check_copy_foo () { copy.foo(); })(); +(function _check_copy_bar () { copy.bar(); })(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin3.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin3.js new file mode 100644 index 000000000..cc1a2a60b --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/badforin3.js @@ -0,0 +1,21 @@ +function copyObjRec(to, from) { + + for (var p in from) { + (function _forin_body(name) { + to[name] = from[name]; + copyObjRec(to,from[name]); + })(p); + } +} + + +var obj = { + foo: function testForIn1() { return 7; }, + bar: function testForIn2() { return "whatever"; } + } + +obj.baz = obj; + +var copy = new Object(); + +copyObjRec(copy, obj); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/calls.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/calls.js new file mode 100755 index 000000000..5cd340a21 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/calls.js @@ -0,0 +1 @@ +(p,x.f)(0); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/complex_call.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/complex_call.js new file mode 100755 index 000000000..9dafcdf14 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/complex_call.js @@ -0,0 +1,18 @@ +Function.prototype.useCall = function f1(){ + var self = this; + return function f1_inner(a, b){ + self.call(this, a, b); + return this; + }; +}; + + +Function.prototype.extend = function f2(key, value){ + this[key] = value; +}.useCall(); + +Number.extend('foobaz', function f3(min, max){ + return min; +}); + +var r = Number.foobaz(3, 4); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/control-flow.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/control-flow.js new file mode 100755 index 000000000..e7d23d3ee --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/control-flow.js @@ -0,0 +1,91 @@ + +function testSwitch( x ) { + var result = -1; + switch ( x ) { + case 3: + result = 7; + + case 4: + case 5: { + result = result+3; + break; + } + + case 6: + result = 2; + + default: + result += 4; + } + + return result; +} + +function testDoWhile( x ) { + var result = 6; + do { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } while (--x > 4); + return result; +} + +function testWhile( x ) { + var result = 6; + while (--x > 4) { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } + return result; +} + +function testFor( x ) { + for(var result = 6; x > 4; x--) { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } + return result; +} + +function testReturn( x ) { + if (x < 17) + return 8; + x++; + return x; +} + +function testDeadLoop( x ) { + while (x < 17) { + return x++; + } + while (x < 17) { + if (x != 5) continue; + return x++; + } + return 0; +} + +testSwitch( 7 ); + +testDoWhile( 5 ); + +testWhile( 11 ); + +testFor( 16 ); + +testReturn( 2 ); + +testDeadLoop( 12 ); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/crash1.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/crash1.js new file mode 100755 index 000000000..492563ceb --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/crash1.js @@ -0,0 +1 @@ +if (1 < 2) q = 42; diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/crash2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/crash2.js new file mode 100755 index 000000000..7ec9234b3 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/crash2.js @@ -0,0 +1,7 @@ +var standalone = false; +try { + document; // ReferenceError +} catch(error) { + standalone = true; +} +assert(standalone); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/dead_phi.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/dead_phi.js new file mode 100644 index 000000000..6b4d4112c --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/dead_phi.js @@ -0,0 +1,12 @@ +var x; + +function f() { + do { + if (f()) { + x++; + break; + } + } while (false); +} + +f(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/dispatch.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/dispatch.js new file mode 100644 index 000000000..6d952aef9 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/dispatch.js @@ -0,0 +1,33 @@ +var left = { + + inner: function left_inner(x) { + return x+1; + }, + + outer: function left_outer(x) { + return this.inner(x+1); + } + +}; + +var right = { + + inner: function right_inner(x) { + return Math.abs(x); + }, + + outer: function right_outer(x) { + return this.inner(-x); + } + +}; + +var x = 3; +if (x > Math.random()) { + x = left; +} else { + x = right; +} + +x.outer(7); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/extjs_switch.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/extjs_switch.js new file mode 100755 index 000000000..1c8df1737 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/extjs_switch.js @@ -0,0 +1,11 @@ + + +(function(x) { + switch(x) { + case Ext.Date: + return 1; + break; + } + return -1; + })(0); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/forin.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/forin.js new file mode 100755 index 000000000..8d5857a86 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/forin.js @@ -0,0 +1,14 @@ +function testForIn( x ) { + var z; + for(var y in x) { + if (y in x) { + z = (x[y])(); + } + } +} + +testForIn({ + foo: function testForIn1() { return 7; }, + bar: function testForIn2() { return "whatever"; } +}); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply.js new file mode 100755 index 000000000..c72ab32e3 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply.js @@ -0,0 +1,18 @@ +function biz() { return this; } + +var q = biz; +var o = { m: function theOne() {} } +var r = q.apply(o); +r.m() + +function id(y) { return y; } + +function theTwo() {} +var p = id; +var s = p.apply(null, [theTwo]); +s(); + +// test invoking with non-array argsList +p.apply(null, o); + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply2.js new file mode 100755 index 000000000..3247ae443 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_apply2.js @@ -0,0 +1,9 @@ +// test use of arguments array +function useArgs() { + return arguments[2]; +} +var o = {} +function theThree() {} +var a = useArgs; +var b = a.apply(o, [o,o,theThree]); +b(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/function_call.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_call.js new file mode 100755 index 000000000..23097a876 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/function_call.js @@ -0,0 +1,12 @@ +function foo(x) { return x; } + +function bar(x) { return x + 1; } + +if (p > 3) { + z = foo; +} else { + z = bar; +} + +z.call(null, 3); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/functions.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/functions.js new file mode 100755 index 000000000..6a8055ef1 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/functions.js @@ -0,0 +1,16 @@ + +function outer(outerArg) { + var local = 3; + + function inner1(inner1Arg) { + outerArg = inner1Arg + 1; + }; + + var fun = function(inner2Arg) { return inner2Arg + outerArg; }; + + inner1( fun(6) ); +} + + + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object.js new file mode 100755 index 000000000..591517886 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object.js @@ -0,0 +1,5 @@ +function biz(p) { return p; } + +var z = (function foo() { return this; })(); + +var x = z.biz(3); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object2.js new file mode 100755 index 000000000..3dfa6560a --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/global_object2.js @@ -0,0 +1,3 @@ +this.f = function foo() {}; + +f(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/inherit.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/inherit.js new file mode 100755 index 000000000..32b310996 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/inherit.js @@ -0,0 +1,45 @@ + +function Polygon() { + this.edges = 8; + this.regular = false; + this.shape = function shape() { return "rectangle"; }; + this.area = function area() { return -1; }; +} + +function objectMasquerading () { + + function Rectangle(top_len,side_len) { + this.temp = Polygon; + this.temp(); + this.temp = null; + this.edges = 4; + this.top = top_len; + this.side = side_len; + this.area = function area() { return this.top*this.sides; }; + } + + return new Rectangle(3, 5); +} + +function sharedClassObject() { + + function Rectangle(top_len, side_len) { + this.edges = 4; + this.top = top_len; + this.side = side_len; + this.area = function area() { return this.top*this.sides; }; + } + + Rectangle.prototype = new Polygon(); + + return new Rectangle(3, 7); +} + +var rec1 = objectMasquerading(); +rec1.area(); +rec1.shape(); + +var rec2 = sharedClassObject(); +rec2.area(); +rec2.shape(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/instanceof.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/instanceof.js new file mode 100755 index 000000000..e1e478984 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/instanceof.js @@ -0,0 +1,5 @@ +var x = {}; + +var y = x instanceof Object; + +var z = x instanceof Function; diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/jquery_spec_test.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/jquery_spec_test.js new file mode 100644 index 000000000..bf7f8a978 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/jquery_spec_test.js @@ -0,0 +1,5588 @@ +(function anonymous__0(window, undefined) { + var document = window.document, navigator = window.navigator, location = window.location; + var jQuery = function anonymous__1() { + var jQuery = function anonymous__2(selector, context) { + return new jQuery.fn.init(selector, context, rootjQuery); + }, _jQuery = window.jQuery, _$ = window.$, rootjQuery, quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, rnotwhite = /\S/, trimLeft = /^\s+/, trimRight = /\s+$/, rdigit = /\d/, rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, rvalidchars = /^[\],:{}\s]*$/, rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, rwebkit = /(webkit)[ \/]([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, userAgent = navigator.userAgent, browserMatch, readyList, DOMContentLoaded, toString = Object.prototype.toString, hasOwn = Object.prototype.hasOwnProperty, push = Array.prototype.push, slice = Array.prototype.slice, trim = String.prototype.trim, indexOf = Array.prototype.indexOf, class2type = {}; + jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function anonymous__3(selector, context, rootjQuery) { + var match, elem, ret, doc; + if (!selector) { + return this; + } + if (selector.nodeType) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + if (selector === "body" && !context && document.body) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + if (typeof selector === "string") { + if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) { + match = [ null, selector, null ]; + } else { + match = quickExpr.exec(selector); + } + if (match && (match[1] || !context)) { + if (match[1]) { + context = context instanceof jQuery ? context[0] : context; + doc = context ? context.ownerDocument || context : document; + ret = rsingleTag.exec(selector); + if (ret) { + if (jQuery.isPlainObject(context)) { + selector = [ document.createElement(ret[1]) ]; + jQuery.fn.attr.call(selector, context, true); + } else { + selector = [ doc.createElement(ret[1]) ]; + } + } else { + ret = jQuery.buildFragment([ match[1] ], [ doc ]); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + return jQuery.merge(this, selector); + } else { + elem = document.getElementById(match[2]); + if (elem && elem.parentNode) { + if (elem.id !== match[2]) { + return rootjQuery.find(selector); + } + this.length = 1; + this[0] = elem; + } + this.context = document; + this.selector = selector; + return this; + } + } else if (!context || context.jquery) { + return (context || rootjQuery).find(selector); + } else { + return this.constructor(context).find(selector); + } + } else if (jQuery.isFunction(selector)) { + return rootjQuery.ready(selector); + } + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + return jQuery.makeArray(selector, this); + }, + selector: "", + jquery: "1.6.1", + length: 0, + size: function anonymous__4() { + return this.length; + }, + toArray: function anonymous__5() { + return slice.call(this, 0); + }, + get: function anonymous__6(num) { + return num == null ? this.toArray() : num < 0 ? this[this.length + num] : this[num]; + }, + pushStack: function anonymous__7(elems, name, selector) { + var ret = this.constructor(); + if (jQuery.isArray(elems)) { + push.apply(ret, elems); + } else { + jQuery.merge(ret, elems); + } + ret.prevObject = this; + ret.context = this.context; + if (name === "find") { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if (name) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + return ret; + }, + each: function anonymous__8(callback, args) { + return jQuery.each(this, callback, args); + }, + ready: function anonymous__9(fn) { + jQuery.bindReady(); + readyList.done(fn); + return this; + }, + eq: function anonymous__10(i) { + return i === -1 ? this.slice(i) : this.slice(i, +i + 1); + }, + first: function anonymous__11() { + return this.eq(0); + }, + last: function anonymous__12() { + return this.eq(-1); + }, + slice: function anonymous__13() { + return this.pushStack(slice.apply(this, arguments), "slice", slice.call(arguments).join(",")); + }, + map: function anonymous__14(callback) { + return this.pushStack(jQuery.map(this, function anonymous__15(elem, i) { + return callback.call(elem, i, elem); + })); + }, + end: function anonymous__16() { + return this.prevObject || this.constructor(null); + }, + push: push, + sort: [].sort, + splice: [].splice + }; + jQuery.fn.init.prototype = jQuery.fn; + jQuery.extend = jQuery.fn.extend = function anonymous__17() { + var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; + if (typeof target === "boolean") { + deep = target; + target = arguments[1] || {}; + i = 2; + } + if (typeof target !== "object" && !jQuery.isFunction(target)) { + target = {}; + } + if (length === i) { + target = this; + --i; + } + for (; i < length; i++) { + if ((options = arguments[i]) != null) { + for (name in options) { + (function _forin_body_extra_1(name) { var src = target[name]; + var copy = options[name]; + if (target === copy) { + return; //continue; + } + if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + target[name] = jQuery.extend(deep, clone, copy); + } else if (copy !== undefined) { + target[name] = copy; + } })(name); + } + } + } + return target; + }; + jQuery.extend({ + noConflict: function anonymous__18(deep) { + if (window.$ === jQuery) { + window.$ = _$; + } + if (deep && window.jQuery === jQuery) { + window.jQuery = _jQuery; + } + return jQuery; + }, + isReady: false, + readyWait: 1, + holdReady: function anonymous__19(hold) { + if (hold) { + jQuery.readyWait++; + } else { + jQuery.ready(true); + } + }, + ready: function anonymous__20(wait) { + if (wait === true && !--jQuery.readyWait || wait !== true && !jQuery.isReady) { + if (!document.body) { + return setTimeout(jQuery.ready, 1); + } + jQuery.isReady = true; + if (wait !== true && --jQuery.readyWait > 0) { + return; + } + readyList.resolveWith(document, [ jQuery ]); + if (jQuery.fn.trigger) { + jQuery(document).trigger("ready").unbind("ready"); + } + } + }, + bindReady: function anonymous__21() { + if (readyList) { + return; + } + readyList = jQuery._Deferred(); + if (document.readyState === "complete") { + return setTimeout(jQuery.ready, 1); + } + if (document.addEventListener) { + document.addEventListener("DOMContentLoaded", DOMContentLoaded, false); + window.addEventListener("load", jQuery.ready, false); + } else if (document.attachEvent) { + document.attachEvent("onreadystatechange", DOMContentLoaded); + window.attachEvent("onload", jQuery.ready); + var toplevel = false; + try { + toplevel = window.frameElement == null; + } catch (e) {} + if (document.documentElement.doScroll && toplevel) { + doScrollCheck(); + } + } + }, + isFunction: function anonymous__22(obj) { + return jQuery.type(obj) === "function"; + }, + isArray: Array.isArray || function anonymous__23(obj) { + return jQuery.type(obj) === "array"; + }, + isWindow: function anonymous__24(obj) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + isNaN: function anonymous__25(obj) { + return obj == null || !rdigit.test(obj) || isNaN(obj); + }, + type: function anonymous__26(obj) { + return obj == null ? String(obj) : class2type[toString.call(obj)] || "object"; + }, + isPlainObject: function anonymous__27(obj) { + if (!obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) { + return false; + } + if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { + return false; + } + var key; + for (key in obj) {} + return key === undefined || hasOwn.call(obj, key); + }, + isEmptyObject: function anonymous__28(obj) { + for (var name in obj) { + return false; + } + return true; + }, + error: function anonymous__29(msg) { + throw msg; + }, + parseJSON: function anonymous__30(data) { + if (typeof data !== "string" || !data) { + return null; + } + data = jQuery.trim(data); + if (window.JSON && window.JSON.parse) { + return window.JSON.parse(data); + } + if (rvalidchars.test(data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, ""))) { + return (new Function("return " + data))(); + } + jQuery.error("Invalid JSON: " + data); + }, + parseXML: function anonymous__31(data, xml, tmp) { + if (window.DOMParser) { + tmp = new DOMParser; + xml = tmp.parseFromString(data, "text/xml"); + } else { + xml = new ActiveXObject("Microsoft.XMLDOM"); + xml.async = "false"; + xml.loadXML(data); + } + tmp = xml.documentElement; + if (!tmp || !tmp.nodeName || tmp.nodeName === "parsererror") { + jQuery.error("Invalid XML: " + data); + } + return xml; + }, + noop: function anonymous__32() {}, + globalEval: function anonymous__33(data) { + if (data && rnotwhite.test(data)) { + (window.execScript || function anonymous__34(data) { + window["eval"].call(window, data); + })(data); + } + }, + nodeName: function anonymous__35(elem, name) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + each: function anonymous__36(object, callback, args) { + var name, i = 0, length = object.length, isObj = length === undefined || jQuery.isFunction(object); + if (args) { + if (isObj) { + for (name in object) { + if (callback.apply(object[name], args) === false) { + break; + } + } + } else { + for (; i < length; ) { + if (callback.apply(object[i++], args) === false) { + break; + } + } + } + } else { + if (isObj) { + for (name in object) { + if((function _forin_body_extra_2(name) { if (callback.call(object[name], name, object[name]) === false) { + return true; + } })(name)) break; + } + } else { + for (; i < length; ) { + if (callback.call(object[i], i, object[i++]) === false) { + break; + } + } + } + } + return object; + }, + trim: trim ? function anonymous__37(text) { + return text == null ? "" : trim.call(text); + } : function anonymous__38(text) { + return text == null ? "" : text.toString().replace(trimLeft, "").replace(trimRight, ""); + }, + makeArray: function anonymous__39(array, results) { + var ret = results || []; + if (array != null) { + var type = jQuery.type(array); + if (array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow(array)) { + push.call(ret, array); + } else { + jQuery.merge(ret, array); + } + } + return ret; + }, + inArray: function anonymous__40(elem, array) { + if (indexOf) { + return indexOf.call(array, elem); + } + for (var i = 0, length = array.length; i < length; i++) { + if (array[i] === elem) { + return i; + } + } + return -1; + }, + merge: function anonymous__41(first, second) { + var i = first.length, j = 0; + if (typeof second.length === "number") { + for (var l = second.length; j < l; j++) { + first[i++] = second[j]; + } + } else { + while (second[j] !== undefined) { + first[i++] = second[j++]; + } + } + first.length = i; + return first; + }, + grep: function anonymous__42(elems, callback, inv) { + var ret = [], retVal; + inv = !!inv; + for (var i = 0, length = elems.length; i < length; i++) { + retVal = !!callback(elems[i], i); + if (inv !== retVal) { + ret.push(elems[i]); + } + } + return ret; + }, + map: function anonymous__43(elems, callback, arg) { + var value, key, ret = [], i = 0, length = elems.length, isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && (length > 0 && elems[0] && elems[length - 1] || length === 0 || jQuery.isArray(elems)); + if (isArray) { + for (; i < length; i++) { + value = callback(elems[i], i, arg); + if (value != null) { + ret[ret.length] = value; + } + } + } else { + for (key in elems) { + value = (function _forin_body_extra_4(key) { return callback(elems[key], key, arg) })(key); + if (value != null) { + ret[ret.length] = value; + } + } + } + return ret.concat.apply([], ret); + }, + guid: 1, + proxy: function anonymous__44(fn, context) { + if (typeof context === "string") { + var tmp = fn[context]; + context = fn; + fn = tmp; + } + if (!jQuery.isFunction(fn)) { + return undefined; + } + var args = slice.call(arguments, 2), proxy = function anonymous__45() { + return fn.apply(context, args.concat(slice.call(arguments))); + }; + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + return proxy; + }, + access: function anonymous__46(elems, key, value, exec, fn, pass) { + var length = elems.length; + if (typeof key === "object") { + for (var k in key) { + (function _forin_body_5(k) { jQuery.access(elems, k, key[k], exec, fn, value); })(k); + } + return elems; + } + if (value !== undefined) { + exec = !pass && exec && jQuery.isFunction(value); + for (var i = 0; i < length; i++) { + fn(elems[i], key, exec ? value.call(elems[i], i, fn(elems[i], key)) : value, pass); + } + return elems; + } + return length ? fn(elems[0], key) : undefined; + }, + now: function anonymous__47() { + return (new Date).getTime(); + }, + uaMatch: function anonymous__48(ua) { + ua = ua.toLowerCase(); + var match = rwebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || []; + return { + browser: match[1] || "", + version: match[2] || "0" + }; + }, + sub: function anonymous__49() { + function jQuerySub(selector, context) { + return new jQuerySub.fn.init(selector, context); + } + jQuery.extend(true, jQuerySub, this); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init(selector, context) { + if (context && context instanceof jQuery && !(context instanceof jQuerySub)) { + context = jQuerySub(context); + } + return jQuery.fn.init.call(this, selector, context, rootjQuerySub); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + browser: {} + }); + jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function anonymous__50(i, name) { + class2type["[object " + name + "]"] = name.toLowerCase(); + }); + browserMatch = jQuery.uaMatch(userAgent); + if (browserMatch.browser) { + jQuery.browser[browserMatch.browser] = true; + jQuery.browser.version = browserMatch.version; + } + if (jQuery.browser.webkit) { + jQuery.browser.safari = true; + } + if (rnotwhite.test(" ")) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; + } + rootjQuery = jQuery(document); + if (document.addEventListener) { + DOMContentLoaded = function anonymous__51() { + document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false); + jQuery.ready(); + }; + } else if (document.attachEvent) { + DOMContentLoaded = function anonymous__52() { + if (document.readyState === "complete") { + document.detachEvent("onreadystatechange", DOMContentLoaded); + jQuery.ready(); + } + }; + } + function doScrollCheck() { + if (jQuery.isReady) { + return; + } + try { + document.documentElement.doScroll("left"); + } catch (e) { + setTimeout(doScrollCheck, 1); + return; + } + jQuery.ready(); + } + return jQuery; + }(); + var promiseMethods = "done fail isResolved isRejected promise then always pipe".split(" "), sliceDeferred = [].slice; + jQuery.extend({ + _Deferred: function anonymous__53() { + var callbacks = [], fired, firing, cancelled, deferred = { + done: function anonymous__54() { + if (!cancelled) { + var args = arguments, i, length, elem, type, _fired; + if (fired) { + _fired = fired; + fired = 0; + } + for (i = 0, length = args.length; i < length; i++) { + elem = args[i]; + type = jQuery.type(elem); + if (type === "array") { + deferred.done.apply(deferred, elem); + } else if (type === "function") { + callbacks.push(elem); + } + } + if (_fired) { + deferred.resolveWith(_fired[0], _fired[1]); + } + } + return this; + }, + resolveWith: function anonymous__55(context, args) { + if (!cancelled && !fired && !firing) { + args = args || []; + firing = 1; + try { + while (callbacks[0]) { + callbacks.shift().apply(context, args); + } + } finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + resolve: function anonymous__56() { + deferred.resolveWith(this, arguments); + return this; + }, + isResolved: function anonymous__57() { + return !!(firing || fired); + }, + cancel: function anonymous__58() { + cancelled = 1; + callbacks = []; + return this; + } + }; + return deferred; + }, + Deferred: function anonymous__59(func) { + var deferred = jQuery._Deferred(), failDeferred = jQuery._Deferred(), promise; + jQuery.extend(deferred, { + then: function anonymous__60(doneCallbacks, failCallbacks) { + deferred.done(doneCallbacks).fail(failCallbacks); + return this; + }, + always: function anonymous__61() { + return deferred.done.apply(deferred, arguments).fail.apply(this, arguments); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function anonymous__62(fnDone, fnFail) { + return jQuery.Deferred(function anonymous__63(newDefer) { + jQuery.each({ + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function anonymous__64(handler, data) { + var fn = data[0], action = data[1], returned; + if (jQuery.isFunction(fn)) { + deferred[handler](function anonymous__65() { + returned = fn.apply(this, arguments); + if (returned && jQuery.isFunction(returned.promise)) { + returned.promise().then(newDefer.resolve, newDefer.reject); + } else { + newDefer[action](returned); + } + }); + } else { + deferred[handler](newDefer[action]); + } + }); + }).promise(); + }, + promise: function anonymous__66(obj) { + if (obj == null) { + if (promise) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while (i--) { + obj[promiseMethods[i]] = deferred[promiseMethods[i]]; + } + return obj; + } + }); + deferred.done(failDeferred.cancel).fail(deferred.cancel); + delete deferred.cancel; + if (func) { + func.call(deferred, deferred); + } + return deferred; + }, + when: function anonymous__67(firstParam) { + var args = arguments, i = 0, length = args.length, count = length, deferred = length <= 1 && firstParam && jQuery.isFunction(firstParam.promise) ? firstParam : jQuery.Deferred(); + function resolveFunc(i) { + return function anonymous__68(value) { + args[i] = arguments.length > 1 ? sliceDeferred.call(arguments, 0) : value; + if (!--count) { + deferred.resolveWith(deferred, sliceDeferred.call(args, 0)); + } + }; + } + if (length > 1) { + for (; i < length; i++) { + if (args[i] && jQuery.isFunction(args[i].promise)) { + args[i].promise().then(resolveFunc(i), deferred.reject); + } else { + --count; + } + } + if (!count) { + deferred.resolveWith(deferred, args); + } + } else if (deferred !== firstParam) { + deferred.resolveWith(deferred, length ? [ firstParam ] : []); + } + return deferred.promise(); + } + }); + jQuery.support = function anonymous__69() { + var div = document.createElement("div"), documentElement = document.documentElement, all, a, select, opt, input, marginDiv, support, fragment, body, bodyStyle, tds, events, eventName, i, isSupported; + div.setAttribute("className", "t"); + div.innerHTML = "
a"; + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[0]; + if (!all || !all.length || !a) { + return {}; + } + select = document.createElement("select"); + opt = select.appendChild(document.createElement("option")); + input = div.getElementsByTagName("input")[0]; + support = { + leadingWhitespace: div.firstChild.nodeType === 3, + tbody: !div.getElementsByTagName("tbody").length, + htmlSerialize: !!div.getElementsByTagName("link").length, + style: /top/.test(a.getAttribute("style")), + hrefNormalized: a.getAttribute("href") === "/a", + opacity: /^0.55$/.test(a.style.opacity), + cssFloat: !!a.style.cssFloat, + checkOn: input.value === "on", + optSelected: opt.selected, + getSetAttribute: div.className !== "t", + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + input.checked = true; + support.noCloneChecked = input.cloneNode(true).checked; + select.disabled = true; + support.optDisabled = !opt.disabled; + try { + delete div.test; + } catch (e) { + support.deleteExpando = false; + } + if (!div.addEventListener && div.attachEvent && div.fireEvent) { + div.attachEvent("onclick", function click() { + support.noCloneEvent = false; + div.detachEvent("onclick", click); + }); + div.cloneNode(true).fireEvent("onclick"); + } + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + input.setAttribute("checked", "checked"); + div.appendChild(input); + fragment = document.createDocumentFragment(); + fragment.appendChild(div.firstChild); + support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + body = document.createElement("body"); + bodyStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + for (i in bodyStyle) { + (function _forin_body_7(i) { body.style[i] = bodyStyle[i]; })(i); + } + body.appendChild(div); + documentElement.insertBefore(body, documentElement.firstChild); + support.appendChecked = input.checked; + support.boxModel = div.offsetWidth === 2; + if ("zoom" in div.style) { + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = div.offsetWidth === 2; + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = div.offsetWidth !== 2; + } + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + isSupported = tds[0].offsetHeight === 0; + tds[0].style.display = ""; + tds[1].style.display = "none"; + support.reliableHiddenOffsets = isSupported && tds[0].offsetHeight === 0; + div.innerHTML = ""; + if (document.defaultView && document.defaultView.getComputedStyle) { + marginDiv = document.createElement("div"); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild(marginDiv); + support.reliableMarginRight = (parseInt((document.defaultView.getComputedStyle(marginDiv, null) || { + marginRight: 0 + }).marginRight, 10) || 0) === 0; + } + body.innerHTML = ""; + documentElement.removeChild(body); + if (div.attachEvent) { + for (i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = eventName in div; + if (!isSupported) { + div.setAttribute(eventName, "return;"); + isSupported = typeof div[eventName] === "function"; + } + support[i + "Bubbles"] = isSupported; + } + } + return support; + }(); + jQuery.boxModel = jQuery.support.boxModel; + var rbrace = /^(?:\{.*\}|\[.*\])$/, rmultiDash = /([a-z])([A-Z])/g; + jQuery.extend({ + cache: {}, + uuid: 0, + expando: "jQuery" + (jQuery.fn.jquery + Math.random()).replace(/\D/g, ""), + noData: { + embed: true, + object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + applet: true + }, + hasData: function anonymous__70(elem) { + elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando]; + return !!elem && !isEmptyDataObject(elem); + }, + data: function anonymous__71(elem, name, data, pvt) { + if (!jQuery.acceptData(elem)) { + return; + } + var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, isNode = elem.nodeType, cache = isNode ? jQuery.cache : elem, id = isNode ? elem[jQuery.expando] : elem[jQuery.expando] && jQuery.expando; + if ((!id || pvt && id && !cache[id][internalKey]) && getByName && data === undefined) { + return; + } + if (!id) { + if (isNode) { + elem[jQuery.expando] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + if (!cache[id]) { + cache[id] = {}; + if (!isNode) { + cache[id].toJSON = jQuery.noop; + } + } + if (typeof name === "object" || typeof name === "function") { + if (pvt) { + cache[id][internalKey] = jQuery.extend(cache[id][internalKey], name); + } else { + cache[id] = jQuery.extend(cache[id], name); + } + } + thisCache = cache[id]; + if (pvt) { + if (!thisCache[internalKey]) { + thisCache[internalKey] = {}; + } + thisCache = thisCache[internalKey]; + } + if (data !== undefined) { + thisCache[jQuery.camelCase(name)] = data; + } + if (name === "events" && !thisCache[name]) { + return thisCache[internalKey] && thisCache[internalKey].events; + } + return getByName ? thisCache[jQuery.camelCase(name)] : thisCache; + }, + removeData: function anonymous__72(elem, name, pvt) { + if (!jQuery.acceptData(elem)) { + return; + } + var internalKey = jQuery.expando, isNode = elem.nodeType, cache = isNode ? jQuery.cache : elem, id = isNode ? elem[jQuery.expando] : jQuery.expando; + if (!cache[id]) { + return; + } + if (name) { + var thisCache = pvt ? cache[id][internalKey] : cache[id]; + if (thisCache) { + delete thisCache[name]; + if (!isEmptyDataObject(thisCache)) { + return; + } + } + } + if (pvt) { + delete cache[id][internalKey]; + if (!isEmptyDataObject(cache[id])) { + return; + } + } + var internalCache = cache[id][internalKey]; + if (jQuery.support.deleteExpando || cache != window) { + delete cache[id]; + } else { + cache[id] = null; + } + if (internalCache) { + cache[id] = {}; + if (!isNode) { + cache[id].toJSON = jQuery.noop; + } + cache[id][internalKey] = internalCache; + } else if (isNode) { + if (jQuery.support.deleteExpando) { + delete elem[jQuery.expando]; + } else if (elem.removeAttribute) { + elem.removeAttribute(jQuery.expando); + } else { + elem[jQuery.expando] = null; + } + } + }, + _data: function anonymous__73(elem, name, data) { + return jQuery.data(elem, name, data, true); + }, + acceptData: function anonymous__74(elem) { + if (elem.nodeName) { + var match = jQuery.noData[elem.nodeName.toLowerCase()]; + if (match) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + return true; + } + }); + jQuery.fn.extend({ + data: function anonymous__75(key, value) { + var data = null; + if (typeof key === "undefined") { + if (this.length) { + data = jQuery.data(this[0]); + if (this[0].nodeType === 1) { + var attr = this[0].attributes, name; + for (var i = 0, l = attr.length; i < l; i++) { + name = attr[i].name; + if (name.indexOf("data-") === 0) { + name = jQuery.camelCase(name.substring(5)); + dataAttr(this[0], name, data[name]); + } + } + } + } + return data; + } else if (typeof key === "object") { + return this.each(function anonymous__76() { + jQuery.data(this, key); + }); + } + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + if (value === undefined) { + data = this.triggerHandler("getData" + parts[1] + "!", [ parts[0] ]); + if (data === undefined && this.length) { + data = jQuery.data(this[0], key); + data = dataAttr(this[0], key, data); + } + return data === undefined && parts[1] ? this.data(parts[0]) : data; + } else { + return this.each(function anonymous__77() { + var $this = jQuery(this), args = [ parts[0], value ]; + $this.triggerHandler("setData" + parts[1] + "!", args); + jQuery.data(this, key, value); + $this.triggerHandler("changeData" + parts[1] + "!", args); + }); + } + }, + removeData: function anonymous__78(key) { + return this.each(function anonymous__79() { + jQuery.removeData(this, key); + }); + } + }); + function dataAttr(elem, key, data) { + if (data === undefined && elem.nodeType === 1) { + var name = "data-" + key.replace(rmultiDash, "$1-$2").toLowerCase(); + data = elem.getAttribute(name); + if (typeof data === "string") { + try { + data = data === "true" ? true : data === "false" ? false : data === "null" ? null : !jQuery.isNaN(data) ? parseFloat(data) : rbrace.test(data) ? jQuery.parseJSON(data) : data; + } catch (e) {} + jQuery.data(elem, key, data); + } else { + data = undefined; + } + } + return data; + } + function isEmptyDataObject(obj) { + for (var name in obj) { + if (name !== "toJSON") { + return false; + } + } + return true; + } + function handleQueueMarkDefer(elem, type, src) { + var deferDataKey = type + "defer", queueDataKey = type + "queue", markDataKey = type + "mark", defer = jQuery.data(elem, deferDataKey, undefined, true); + if (defer && (src === "queue" || !jQuery.data(elem, queueDataKey, undefined, true)) && (src === "mark" || !jQuery.data(elem, markDataKey, undefined, true))) { + setTimeout(function anonymous__80() { + if (!jQuery.data(elem, queueDataKey, undefined, true) && !jQuery.data(elem, markDataKey, undefined, true)) { + jQuery.removeData(elem, deferDataKey, true); + defer.resolve(); + } + }, 0); + } + } + jQuery.extend({ + _mark: function anonymous__81(elem, type) { + if (elem) { + type = (type || "fx") + "mark"; + jQuery.data(elem, type, (jQuery.data(elem, type, undefined, true) || 0) + 1, true); + } + }, + _unmark: function anonymous__82(force, elem, type) { + if (force !== true) { + type = elem; + elem = force; + force = false; + } + if (elem) { + type = type || "fx"; + var key = type + "mark", count = force ? 0 : (jQuery.data(elem, key, undefined, true) || 1) - 1; + if (count) { + jQuery.data(elem, key, count, true); + } else { + jQuery.removeData(elem, key, true); + handleQueueMarkDefer(elem, type, "mark"); + } + } + }, + queue: function anonymous__83(elem, type, data) { + if (elem) { + type = (type || "fx") + "queue"; + var q = jQuery.data(elem, type, undefined, true); + if (data) { + if (!q || jQuery.isArray(data)) { + q = jQuery.data(elem, type, jQuery.makeArray(data), true); + } else { + q.push(data); + } + } + return q || []; + } + }, + dequeue: function anonymous__84(elem, type) { + type = type || "fx"; + var queue = jQuery.queue(elem, type), fn = queue.shift(), defer; + if (fn === "inprogress") { + fn = queue.shift(); + } + if (fn) { + if (type === "fx") { + queue.unshift("inprogress"); + } + fn.call(elem, function anonymous__85() { + jQuery.dequeue(elem, type); + }); + } + if (!queue.length) { + jQuery.removeData(elem, type + "queue", true); + handleQueueMarkDefer(elem, type, "queue"); + } + } + }); + jQuery.fn.extend({ + queue: function anonymous__86(type, data) { + if (typeof type !== "string") { + data = type; + type = "fx"; + } + if (data === undefined) { + return jQuery.queue(this[0], type); + } + return this.each(function anonymous__87() { + var queue = jQuery.queue(this, type, data); + if (type === "fx" && queue[0] !== "inprogress") { + jQuery.dequeue(this, type); + } + }); + }, + dequeue: function anonymous__88(type) { + return this.each(function anonymous__89() { + jQuery.dequeue(this, type); + }); + }, + delay: function anonymous__90(time, type) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + return this.queue(type, function anonymous__91() { + var elem = this; + setTimeout(function anonymous__92() { + jQuery.dequeue(elem, type); + }, time); + }); + }, + clearQueue: function anonymous__93(type) { + return this.queue(type || "fx", []); + }, + promise: function anonymous__94(type, object) { + if (typeof type !== "string") { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), elements = this, i = elements.length, count = 1, deferDataKey = type + "defer", queueDataKey = type + "queue", markDataKey = type + "mark", tmp; + function resolve() { + if (!--count) { + defer.resolveWith(elements, [ elements ]); + } + } + while (i--) { + if (tmp = jQuery.data(elements[i], deferDataKey, undefined, true) || (jQuery.data(elements[i], queueDataKey, undefined, true) || jQuery.data(elements[i], markDataKey, undefined, true)) && jQuery.data(elements[i], deferDataKey, jQuery._Deferred(), true)) { + count++; + tmp.done(resolve); + } + } + resolve(); + return defer.promise(); + } + }); + var rclass = /[\n\t\r]/g, rspace = /\s+/, rreturn = /\r/g, rtype = /^(?:button|input)$/i, rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea)?$/i, rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, rinvalidChar = /\:/, formHook, boolHook; + jQuery.fn.extend({ + attr: function anonymous__95(name, value) { + return jQuery.access(this, name, value, true, jQuery.attr); + }, + removeAttr: function anonymous__96(name) { + return this.each(function anonymous__97() { + jQuery.removeAttr(this, name); + }); + }, + prop: function anonymous__98(name, value) { + return jQuery.access(this, name, value, true, jQuery.prop); + }, + removeProp: function anonymous__99(name) { + name = jQuery.propFix[name] || name; + return this.each(function anonymous__100() { + try { + this[name] = undefined; + delete this[name]; + } catch (e) {} + }); + }, + addClass: function anonymous__101(value) { + if (jQuery.isFunction(value)) { + return this.each(function anonymous__102(i) { + var self = jQuery(this); + self.addClass(value.call(this, i, self.attr("class") || "")); + }); + } + if (value && typeof value === "string") { + var classNames = (value || "").split(rspace); + for (var i = 0, l = this.length; i < l; i++) { + var elem = this[i]; + if (elem.nodeType === 1) { + if (!elem.className) { + elem.className = value; + } else { + var className = " " + elem.className + " ", setClass = elem.className; + for (var c = 0, cl = classNames.length; c < cl; c++) { + if (className.indexOf(" " + classNames[c] + " ") < 0) { + setClass += " " + classNames[c]; + } + } + elem.className = jQuery.trim(setClass); + } + } + } + } + return this; + }, + removeClass: function anonymous__103(value) { + if (jQuery.isFunction(value)) { + return this.each(function anonymous__104(i) { + var self = jQuery(this); + self.removeClass(value.call(this, i, self.attr("class"))); + }); + } + if (value && typeof value === "string" || value === undefined) { + var classNames = (value || "").split(rspace); + for (var i = 0, l = this.length; i < l; i++) { + var elem = this[i]; + if (elem.nodeType === 1 && elem.className) { + if (value) { + var className = (" " + elem.className + " ").replace(rclass, " "); + for (var c = 0, cl = classNames.length; c < cl; c++) { + className = className.replace(" " + classNames[c] + " ", " "); + } + elem.className = jQuery.trim(className); + } else { + elem.className = ""; + } + } + } + } + return this; + }, + toggleClass: function anonymous__105(value, stateVal) { + var type = typeof value, isBool = typeof stateVal === "boolean"; + if (jQuery.isFunction(value)) { + return this.each(function anonymous__106(i) { + var self = jQuery(this); + self.toggleClass(value.call(this, i, self.attr("class"), stateVal), stateVal); + }); + } + return this.each(function anonymous__107() { + if (type === "string") { + var className, i = 0, self = jQuery(this), state = stateVal, classNames = value.split(rspace); + while (className = classNames[i++]) { + state = isBool ? state : !self.hasClass(className); + self[state ? "addClass" : "removeClass"](className); + } + } else if (type === "undefined" || type === "boolean") { + if (this.className) { + jQuery._data(this, "__className__", this.className); + } + this.className = this.className || value === false ? "" : jQuery._data(this, "__className__") || ""; + } + }); + }, + hasClass: function anonymous__108(selector) { + var className = " " + selector + " "; + for (var i = 0, l = this.length; i < l; i++) { + if ((" " + this[i].className + " ").replace(rclass, " ").indexOf(className) > -1) { + return true; + } + } + return false; + }, + val: function anonymous__109(value) { + var hooks, ret, elem = this[0]; + if (!arguments.length) { + if (elem) { + hooks = jQuery.valHooks[elem.nodeName.toLowerCase()] || jQuery.valHooks[elem.type]; + if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) { + return ret; + } + return (elem.value || "").replace(rreturn, ""); + } + return undefined; + } + var isFunction = jQuery.isFunction(value); + return this.each(function anonymous__110(i) { + var self = jQuery(this), val; + if (this.nodeType !== 1) { + return; + } + if (isFunction) { + val = value.call(this, i, self.val()); + } else { + val = value; + } + if (val == null) { + val = ""; + } else if (typeof val === "number") { + val += ""; + } else if (jQuery.isArray(val)) { + val = jQuery.map(val, function anonymous__111(value) { + return value == null ? "" : value + ""; + }); + } + hooks = jQuery.valHooks[this.nodeName.toLowerCase()] || jQuery.valHooks[this.type]; + if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) { + this.value = val; + } + }); + } + }); + jQuery.extend({ + valHooks: { + option: { + get: function anonymous__112(elem) { + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function anonymous__113(elem) { + var value, index = elem.selectedIndex, values = [], options = elem.options, one = elem.type === "select-one"; + if (index < 0) { + return null; + } + for (var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++) { + var option = options[i]; + if (option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, "optgroup"))) { + value = jQuery(option).val(); + if (one) { + return value; + } + values.push(value); + } + } + if (one && !values.length && options.length) { + return jQuery(options[index]).val(); + } + return values; + }, + set: function anonymous__114(elem, value) { + var values = jQuery.makeArray(value); + jQuery(elem).find("option").each(function anonymous__115() { + this.selected = jQuery.inArray(jQuery(this).val(), values) >= 0; + }); + if (!values.length) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + attrFix: { + tabindex: "tabIndex" + }, + attr: function anonymous__116(elem, name, value, pass) { + var nType = elem.nodeType; + if (!elem || nType === 3 || nType === 8 || nType === 2) { + return undefined; + } + if (pass && name in jQuery.attrFn) { + return jQuery(elem)[name](value); + } + if (!("getAttribute" in elem)) { + return jQuery.prop(elem, name, value); + } + var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc(elem); + name = notxml && jQuery.attrFix[name] || name; + hooks = jQuery.attrHooks[name]; + if (!hooks) { + if (rboolean.test(name) && (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase())) { + hooks = boolHook; + } else if (formHook && (jQuery.nodeName(elem, "form") || rinvalidChar.test(name))) { + hooks = formHook; + } + } + if (value !== undefined) { + if (value === null) { + jQuery.removeAttr(elem, name); + return undefined; + } else if (hooks && "set" in hooks && notxml && (ret = hooks.set(elem, value, name)) !== undefined) { + return ret; + } else { + elem.setAttribute(name, "" + value); + return value; + } + } else if (hooks && "get" in hooks && notxml) { + return hooks.get(elem, name); + } else { + ret = elem.getAttribute(name); + return ret === null ? undefined : ret; + } + }, + removeAttr: function anonymous__117(elem, name) { + var propName; + if (elem.nodeType === 1) { + name = jQuery.attrFix[name] || name; + if (jQuery.support.getSetAttribute) { + elem.removeAttribute(name); + } else { + jQuery.attr(elem, name, ""); + elem.removeAttributeNode(elem.getAttributeNode(name)); + } + if (rboolean.test(name) && (propName = jQuery.propFix[name] || name) in elem) { + elem[propName] = false; + } + } + }, + attrHooks: { + type: { + set: function anonymous__118(elem, value) { + if (rtype.test(elem.nodeName) && elem.parentNode) { + jQuery.error("type property can't be changed"); + } else if (!jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input")) { + var val = elem.value; + elem.setAttribute("type", value); + if (val) { + elem.value = val; + } + return value; + } + } + }, + tabIndex: { + get: function anonymous__119(elem) { + var attributeNode = elem.getAttributeNode("tabIndex"); + return attributeNode && attributeNode.specified ? parseInt(attributeNode.value, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : undefined; + } + } + }, + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + prop: function anonymous__120(elem, name, value) { + var nType = elem.nodeType; + if (!elem || nType === 3 || nType === 8 || nType === 2) { + return undefined; + } + var ret, hooks, notxml = nType !== 1 || !jQuery.isXMLDoc(elem); + name = notxml && jQuery.propFix[name] || name; + hooks = jQuery.propHooks[name]; + if (value !== undefined) { + if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) { + return ret; + } else { + return elem[name] = value; + } + } else { + if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== undefined) { + return ret; + } else { + return elem[name]; + } + } + }, + propHooks: {} + }); + boolHook = { + get: function anonymous__121(elem, name) { + return elem[jQuery.propFix[name] || name] ? name.toLowerCase() : undefined; + }, + set: function anonymous__122(elem, value, name) { + var propName; + if (value === false) { + jQuery.removeAttr(elem, name); + } else { + propName = jQuery.propFix[name] || name; + if (propName in elem) { + elem[propName] = value; + } + elem.setAttribute(name, name.toLowerCase()); + } + return name; + } + }; + jQuery.attrHooks.value = { + get: function anonymous__123(elem, name) { + if (formHook && jQuery.nodeName(elem, "button")) { + return formHook.get(elem, name); + } + return elem.value; + }, + set: function anonymous__124(elem, value, name) { + if (formHook && jQuery.nodeName(elem, "button")) { + return formHook.set(elem, value, name); + } + elem.value = value; + } + }; + if (!jQuery.support.getSetAttribute) { + jQuery.attrFix = jQuery.propFix; + formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { + get: function anonymous__125(elem, name) { + var ret; + ret = elem.getAttributeNode(name); + return ret && ret.nodeValue !== "" ? ret.nodeValue : undefined; + }, + set: function anonymous__126(elem, value, name) { + var ret = elem.getAttributeNode(name); + if (ret) { + ret.nodeValue = value; + return value; + } + } + }; + jQuery.each([ "width", "height" ], function anonymous__127(i, name) { + jQuery.attrHooks[name] = jQuery.extend(jQuery.attrHooks[name], { + set: function anonymous__128(elem, value) { + if (value === "") { + elem.setAttribute(name, "auto"); + return value; + } + } + }); + }); + } + if (!jQuery.support.hrefNormalized) { + jQuery.each([ "href", "src", "width", "height" ], function anonymous__129(i, name) { + jQuery.attrHooks[name] = jQuery.extend(jQuery.attrHooks[name], { + get: function anonymous__130(elem) { + var ret = elem.getAttribute(name, 2); + return ret === null ? undefined : ret; + } + }); + }); + } + if (!jQuery.support.style) { + jQuery.attrHooks.style = { + get: function anonymous__131(elem) { + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function anonymous__132(elem, value) { + return elem.style.cssText = "" + value; + } + }; + } + if (!jQuery.support.optSelected) { + jQuery.propHooks.selected = jQuery.extend(jQuery.propHooks.selected, { + get: function anonymous__133(elem) { + var parent = elem.parentNode; + if (parent) { + parent.selectedIndex; + if (parent.parentNode) { + parent.parentNode.selectedIndex; + } + } + } + }); + } + if (!jQuery.support.checkOn) { + jQuery.each([ "radio", "checkbox" ], function anonymous__134() { + jQuery.valHooks[this] = { + get: function anonymous__135(elem) { + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); + } + jQuery.each([ "radio", "checkbox" ], function anonymous__136() { + jQuery.valHooks[this] = jQuery.extend(jQuery.valHooks[this], { + set: function anonymous__137(elem, value) { + if (jQuery.isArray(value)) { + return elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0; + } + } + }); + }); + var hasOwn = Object.prototype.hasOwnProperty, rnamespaces = /\.(.*)$/, rformElems = /^(?:textarea|input|select)$/i, rperiod = /\./g, rspaces = / /g, rescape = /[^\w\s.|`]/g, fcleanup = function anonymous__138(nm) { + return nm.replace(rescape, "\\$&"); + }; + jQuery.event = { + add: function anonymous__139(elem, types, handler, data) { + if (elem.nodeType === 3 || elem.nodeType === 8) { + return; + } + if (handler === false) { + handler = returnFalse; + } else if (!handler) { + return; + } + var handleObjIn, handleObj; + if (handler.handler) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + if (!handler.guid) { + handler.guid = jQuery.guid++; + } + var elemData = jQuery._data(elem); + if (!elemData) { + return; + } + var events = elemData.events, eventHandle = elemData.handle; + if (!events) { + elemData.events = events = {}; + } + if (!eventHandle) { + elemData.handle = eventHandle = function anonymous__140(e) { + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.handle.apply(eventHandle.elem, arguments) : undefined; + }; + } + eventHandle.elem = elem; + types = types.split(" "); + var type, i = 0, namespaces; + while (type = types[i++]) { + handleObj = handleObjIn ? jQuery.extend({}, handleObjIn) : { + handler: handler, + data: data + }; + if (type.indexOf(".") > -1) { + namespaces = type.split("."); + type = namespaces.shift(); + handleObj.namespace = namespaces.slice(0).sort().join("."); + } else { + namespaces = []; + handleObj.namespace = ""; + } + handleObj.type = type; + if (!handleObj.guid) { + handleObj.guid = handler.guid; + } + var handlers = events[type], special = jQuery.event.special[type] || {}; + if (!handlers) { + handlers = events[type] = []; + if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { + if (elem.addEventListener) { + elem.addEventListener(type, eventHandle, false); + } else if (elem.attachEvent) { + elem.attachEvent("on" + type, eventHandle); + } + } + } + if (special.add) { + special.add.call(elem, handleObj); + if (!handleObj.handler.guid) { + handleObj.handler.guid = handler.guid; + } + } + handlers.push(handleObj); + jQuery.event.global[type] = true; + } + elem = null; + }, + global: {}, + remove: function anonymous__141(elem, types, handler, pos) { + if (elem.nodeType === 3 || elem.nodeType === 8) { + return; + } + if (handler === false) { + handler = returnFalse; + } + var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, elemData = jQuery.hasData(elem) && jQuery._data(elem), events = elemData && elemData.events; + if (!elemData || !events) { + return; + } + if (types && types.type) { + handler = types.handler; + types = types.type; + } + if (!types || typeof types === "string" && types.charAt(0) === ".") { + types = types || ""; + for (type in events) { + jQuery.event.remove(elem, type + types); + } + return; + } + types = types.split(" "); + while (type = types[i++]) { + origType = type; + handleObj = null; + all = type.indexOf(".") < 0; + namespaces = []; + if (!all) { + namespaces = type.split("."); + type = namespaces.shift(); + namespace = new RegExp("(^|\\.)" + jQuery.map(namespaces.slice(0).sort(), fcleanup).join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + eventType = events[type]; + if (!eventType) { + continue; + } + if (!handler) { + for (j = 0; j < eventType.length; j++) { + handleObj = eventType[j]; + if (all || namespace.test(handleObj.namespace)) { + jQuery.event.remove(elem, origType, handleObj.handler, j); + eventType.splice(j--, 1); + } + } + continue; + } + special = jQuery.event.special[type] || {}; + for (j = pos || 0; j < eventType.length; j++) { + handleObj = eventType[j]; + if (handler.guid === handleObj.guid) { + if (all || namespace.test(handleObj.namespace)) { + if (pos == null) { + eventType.splice(j--, 1); + } + if (special.remove) { + special.remove.call(elem, handleObj); + } + } + if (pos != null) { + break; + } + } + } + if (eventType.length === 0 || pos != null && eventType.length === 1) { + if (!special.teardown || special.teardown.call(elem, namespaces) === false) { + jQuery.removeEvent(elem, type, elemData.handle); + } + ret = null; + delete events[type]; + } + } + if (jQuery.isEmptyObject(events)) { + var handle = elemData.handle; + if (handle) { + handle.elem = null; + } + delete elemData.events; + delete elemData.handle; + if (jQuery.isEmptyObject(elemData)) { + jQuery.removeData(elem, undefined, true); + } + } + }, + customEvent: { + getData: true, + setData: true, + changeData: true + }, + trigger: function anonymous__142(event, data, elem, onlyHandlers) { + var type = event.type || event, namespaces = [], exclusive; + if (type.indexOf("!") >= 0) { + type = type.slice(0, -1); + exclusive = true; + } + if (type.indexOf(".") >= 0) { + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + if ((!elem || jQuery.event.customEvent[type]) && !jQuery.event.global[type]) { + return; + } + event = typeof event === "object" ? event[jQuery.expando] ? event : new jQuery.Event(type, event) : new jQuery.Event(type); + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + if (onlyHandlers || !elem) { + event.preventDefault(); + event.stopPropagation(); + } + if (!elem) { + jQuery.each(jQuery.cache, function anonymous__143() { + var internalKey = jQuery.expando, internalCache = this[internalKey]; + if (internalCache && internalCache.events && internalCache.events[type]) { + jQuery.event.trigger(event, data, internalCache.handle.elem); + } + }); + return; + } + if (elem.nodeType === 3 || elem.nodeType === 8) { + return; + } + event.result = undefined; + event.target = elem; + data = data ? jQuery.makeArray(data) : []; + data.unshift(event); + var cur = elem, ontype = type.indexOf(":") < 0 ? "on" + type : ""; + do { + var handle = jQuery._data(cur, "handle"); + event.currentTarget = cur; + if (handle) { + handle.apply(cur, data); + } + if (ontype && jQuery.acceptData(cur) && cur[ontype] && cur[ontype].apply(cur, data) === false) { + event.result = false; + event.preventDefault(); + } + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while (cur && !event.isPropagationStopped()); + if (!event.isDefaultPrevented()) { + var old, special = jQuery.event.special[type] || {}; + if ((!special._default || special._default.call(elem.ownerDocument, event) === false) && !(type === "click" && jQuery.nodeName(elem, "a")) && jQuery.acceptData(elem)) { + (function _forin_body_extra_3(ontype) { var old; try { + if (ontype && elem[type]) { + old = elem[ontype]; + if (old) { + elem[ontype] = null; + } + jQuery.event.triggered = type; + elem[type](); + } + } catch (ieError) {} + if (old) { + elem[ontype] = old; + } })(ontype); + jQuery.event.triggered = undefined; + } + } + return event.result; + }, + handle: function anonymous__144(event) { + event = jQuery.event.fix(event || window.event); + var handlers = ((jQuery._data(this, "events") || {})[event.type] || []).slice(0), run_all = !event.exclusive && !event.namespace, args = Array.prototype.slice.call(arguments, 0); + args[0] = event; + event.currentTarget = this; + for (var j = 0, l = handlers.length; j < l; j++) { + var handleObj = handlers[j]; + if (run_all || event.namespace_re.test(handleObj.namespace)) { + event.handler = handleObj.handler; + event.data = handleObj.data; + event.handleObj = handleObj; + var ret = handleObj.handler.apply(this, args); + if (ret !== undefined) { + event.result = ret; + if (ret === false) { + event.preventDefault(); + event.stopPropagation(); + } + } + if (event.isImmediatePropagationStopped()) { + break; + } + } + } + return event.result; + }, + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + fix: function anonymous__145(event) { + if (event[jQuery.expando]) { + return event; + } + var originalEvent = event; + event = jQuery.Event(originalEvent); + for (var i = this.props.length, prop; i; ) { + prop = this.props[--i]; + event[prop] = originalEvent[prop]; + } + if (!event.target) { + event.target = event.srcElement || document; + } + if (event.target.nodeType === 3) { + event.target = event.target.parentNode; + } + if (!event.relatedTarget && event.fromElement) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + if (event.pageX == null && event.clientX != null) { + var eventDocument = event.target.ownerDocument || document, doc = eventDocument.documentElement, body = eventDocument.body; + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + if (event.which == null && (event.charCode != null || event.keyCode != null)) { + event.which = event.charCode != null ? event.charCode : event.keyCode; + } + if (!event.metaKey && event.ctrlKey) { + event.metaKey = event.ctrlKey; + } + if (!event.which && event.button !== undefined) { + event.which = event.button & 1 ? 1 : event.button & 2 ? 3 : event.button & 4 ? 2 : 0; + } + return event; + }, + guid: 1e8, + proxy: jQuery.proxy, + special: { + ready: { + setup: jQuery.bindReady, + teardown: jQuery.noop + }, + live: { + add: function anonymous__146(handleObj) { + jQuery.event.add(this, liveConvert(handleObj.origType, handleObj.selector), jQuery.extend({}, handleObj, { + handler: liveHandler, + guid: handleObj.handler.guid + })); + }, + remove: function anonymous__147(handleObj) { + jQuery.event.remove(this, liveConvert(handleObj.origType, handleObj.selector), handleObj); + } + }, + beforeunload: { + setup: function anonymous__148(data, namespaces, eventHandle) { + if (jQuery.isWindow(this)) { + this.onbeforeunload = eventHandle; + } + }, + teardown: function anonymous__149(namespaces, eventHandle) { + if (this.onbeforeunload === eventHandle) { + this.onbeforeunload = null; + } + } + } + } + }; + jQuery.removeEvent = document.removeEventListener ? function anonymous__150(elem, type, handle) { + if (elem.removeEventListener) { + elem.removeEventListener(type, handle, false); + } + } : function anonymous__151(elem, type, handle) { + if (elem.detachEvent) { + elem.detachEvent("on" + type, handle); + } + }; + jQuery.Event = function anonymous__152(src, props) { + if (!this.preventDefault) { + return new jQuery.Event(src, props); + } + if (src && src.type) { + this.originalEvent = src; + this.type = src.type; + this.isDefaultPrevented = src.defaultPrevented || src.returnValue === false || src.getPreventDefault && src.getPreventDefault() ? returnTrue : returnFalse; + } else { + this.type = src; + } + if (props) { + jQuery.extend(this, props); + } + this.timeStamp = jQuery.now(); + this[jQuery.expando] = true; + }; + function returnFalse() { + return false; + } + function returnTrue() { + return true; + } + jQuery.Event.prototype = { + preventDefault: function anonymous__153() { + this.isDefaultPrevented = returnTrue; + var e = this.originalEvent; + if (!e) { + return; + } + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + }, + stopPropagation: function anonymous__154() { + this.isPropagationStopped = returnTrue; + var e = this.originalEvent; + if (!e) { + return; + } + if (e.stopPropagation) { + e.stopPropagation(); + } + e.cancelBubble = true; + }, + stopImmediatePropagation: function anonymous__155() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse + }; + var withinElement = function anonymous__156(event) { + var parent = event.relatedTarget; + event.type = event.data; + try { + if (parent && parent !== document && !parent.parentNode) { + return; + } + while (parent && parent !== this) { + parent = parent.parentNode; + } + if (parent !== this) { + jQuery.event.handle.apply(this, arguments); + } + } catch (e) {} + }, delegate = function anonymous__157(event) { + event.type = event.data; + jQuery.event.handle.apply(this, arguments); + }; + jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }, function anonymous__158(orig, fix) { + jQuery.event.special[orig] = { + setup: function anonymous__159(data) { + jQuery.event.add(this, fix, data && data.selector ? delegate : withinElement, orig); + }, + teardown: function anonymous__160(data) { + jQuery.event.remove(this, fix, data && data.selector ? delegate : withinElement); + } + }; + }); + if (!jQuery.support.submitBubbles) { + jQuery.event.special.submit = { + setup: function anonymous__161(data, namespaces) { + if (!jQuery.nodeName(this, "form")) { + jQuery.event.add(this, "click.specialSubmit", function anonymous__162(e) { + var elem = e.target, type = elem.type; + if ((type === "submit" || type === "image") && jQuery(elem).closest("form").length) { + trigger("submit", this, arguments); + } + }); + jQuery.event.add(this, "keypress.specialSubmit", function anonymous__163(e) { + var elem = e.target, type = elem.type; + if ((type === "text" || type === "password") && jQuery(elem).closest("form").length && e.keyCode === 13) { + trigger("submit", this, arguments); + } + }); + } else { + return false; + } + }, + teardown: function anonymous__164(namespaces) { + jQuery.event.remove(this, ".specialSubmit"); + } + }; + } + if (!jQuery.support.changeBubbles) { + var changeFilters, getVal = function anonymous__165(elem) { + var type = elem.type, val = elem.value; + if (type === "radio" || type === "checkbox") { + val = elem.checked; + } else if (type === "select-multiple") { + val = elem.selectedIndex > -1 ? jQuery.map(elem.options, function anonymous__166(elem) { + return elem.selected; + }).join("-") : ""; + } else if (jQuery.nodeName(elem, "select")) { + val = elem.selectedIndex; + } + return val; + }, testChange = function testChange(e) { + var elem = e.target, data, val; + if (!rformElems.test(elem.nodeName) || elem.readOnly) { + return; + } + data = jQuery._data(elem, "_change_data"); + val = getVal(elem); + if (e.type !== "focusout" || elem.type !== "radio") { + jQuery._data(elem, "_change_data", val); + } + if (data === undefined || val === data) { + return; + } + if (data != null || val) { + e.type = "change"; + e.liveFired = undefined; + jQuery.event.trigger(e, arguments[1], elem); + } + }; + jQuery.event.special.change = { + filters: { + focusout: testChange, + beforedeactivate: testChange, + click: function anonymous__167(e) { + var elem = e.target, type = jQuery.nodeName(elem, "input") ? elem.type : ""; + if (type === "radio" || type === "checkbox" || jQuery.nodeName(elem, "select")) { + testChange.call(this, e); + } + }, + keydown: function anonymous__168(e) { + var elem = e.target, type = jQuery.nodeName(elem, "input") ? elem.type : ""; + if (e.keyCode === 13 && !jQuery.nodeName(elem, "textarea") || e.keyCode === 32 && (type === "checkbox" || type === "radio") || type === "select-multiple") { + testChange.call(this, e); + } + }, + beforeactivate: function anonymous__169(e) { + var elem = e.target; + jQuery._data(elem, "_change_data", getVal(elem)); + } + }, + setup: function anonymous__170(data, namespaces) { + if (this.type === "file") { + return false; + } + for (var type in changeFilters) { + jQuery.event.add(this, type + ".specialChange", changeFilters[type]); + } + return rformElems.test(this.nodeName); + }, + teardown: function anonymous__171(namespaces) { + jQuery.event.remove(this, ".specialChange"); + return rformElems.test(this.nodeName); + } + }; + changeFilters = jQuery.event.special.change.filters; + changeFilters.focus = changeFilters.beforeactivate; + } + function trigger(type, elem, args) { + var event = jQuery.extend({}, args[0]); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call(elem, event); + if (event.isDefaultPrevented()) { + args[0].preventDefault(); + } + } + if (!jQuery.support.focusinBubbles) { + jQuery.each({ + focus: "focusin", + blur: "focusout" + }, function anonymous__172(orig, fix) { + var attaches = 0; + jQuery.event.special[fix] = { + setup: function anonymous__173() { + if (attaches++ === 0) { + document.addEventListener(orig, handler, true); + } + }, + teardown: function anonymous__174() { + if (--attaches === 0) { + document.removeEventListener(orig, handler, true); + } + } + }; + function handler(donor) { + var e = jQuery.event.fix(donor); + e.type = fix; + e.originalEvent = {}; + jQuery.event.trigger(e, null, e.target); + if (e.isDefaultPrevented()) { + donor.preventDefault(); + } + } + }); + } + jQuery.each([ "bind", "one" ], function anonymous__175(i, name) { + jQuery.fn[name] = function anonymous__176(type, data, fn) { + var handler; + if (typeof type === "object") { + for (var key in type) { + (function _forin_body_6(key, thi$) { thi$[name](key, data, type[key], fn); })(key, this); + } + return this; + } + if (arguments.length === 2 || data === false) { + fn = data; + data = undefined; + } + if (name === "one") { + handler = function anonymous__177(event) { + jQuery(this).unbind(event, handler); + return fn.apply(this, arguments); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + if (type === "unload" && name !== "one") { + this.one(type, data, fn); + } else { + for (var i = 0, l = this.length; i < l; i++) { + jQuery.event.add(this[i], type, handler, data); + } + } + return this; + }; + }); + jQuery.fn.extend({ + unbind: function anonymous__178(type, fn) { + if (typeof type === "object" && !type.preventDefault) { + for (var key in type) { + (function _forin_body_7(key, thi$) { thi$.unbind(key, type[key]); })(key, this); + } + } else { + for (var i = 0, l = this.length; i < l; i++) { + jQuery.event.remove(this[i], type, fn); + } + } + return this; + }, + delegate: function anonymous__179(selector, types, data, fn) { + return this.live(types, data, fn, selector); + }, + undelegate: function anonymous__180(selector, types, fn) { + if (arguments.length === 0) { + return this.unbind("live"); + } else { + return this.die(types, null, fn, selector); + } + }, + trigger: function anonymous__181(type, data) { + return this.each(function anonymous__182() { + jQuery.event.trigger(type, data, this); + }); + }, + triggerHandler: function anonymous__183(type, data) { + if (this[0]) { + return jQuery.event.trigger(type, data, this[0], true); + } + }, + toggle: function anonymous__184(fn) { + var args = arguments, guid = fn.guid || jQuery.guid++, i = 0, toggler = function anonymous__185(event) { + var lastToggle = (jQuery.data(this, "lastToggle" + fn.guid) || 0) % i; + jQuery.data(this, "lastToggle" + fn.guid, lastToggle + 1); + event.preventDefault(); + return args[lastToggle].apply(this, arguments) || false; + }; + toggler.guid = guid; + while (i < args.length) { + args[i++].guid = guid; + } + return this.click(toggler); + }, + hover: function anonymous__186(fnOver, fnOut) { + return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); + } + }); + var liveMap = { + focus: "focusin", + blur: "focusout", + mouseenter: "mouseover", + mouseleave: "mouseout" + }; + jQuery.each([ "live", "die" ], function anonymous__187(i, name) { + jQuery.fn[name] = function anonymous__188(types, data, fn, origSelector) { + var type, i = 0, match, namespaces, preType, selector = origSelector || this.selector, context = origSelector ? this : jQuery(this.context); + if (typeof types === "object" && !types.preventDefault) { + for (var key in types) { + (function _forin_body_8(key) { context[name](key, data, types[key], selector); })(key); + } + return this; + } + if (name === "die" && !types && origSelector && origSelector.charAt(0) === ".") { + context.unbind(origSelector); + return this; + } + if (data === false || jQuery.isFunction(data)) { + fn = data || returnFalse; + data = undefined; + } + types = (types || "").split(" "); + while ((type = types[i++]) != null) { + match = rnamespaces.exec(type); + namespaces = ""; + if (match) { + namespaces = match[0]; + type = type.replace(rnamespaces, ""); + } + if (type === "hover") { + types.push("mouseenter" + namespaces, "mouseleave" + namespaces); + continue; + } + preType = type; + if (liveMap[type]) { + types.push(liveMap[type] + namespaces); + type = type + namespaces; + } else { + type = (liveMap[type] || type) + namespaces; + } + if (name === "live") { + for (var j = 0, l = context.length; j < l; j++) { + jQuery.event.add(context[j], "live." + liveConvert(type, selector), { + data: data, + selector: selector, + handler: fn, + origType: type, + origHandler: fn, + preType: preType + }); + } + } else { + context.unbind("live." + liveConvert(type, selector), fn); + } + } + return this; + }; + }); + function liveHandler(event) { + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, elems = [], selectors = [], events = jQuery._data(this, "events"); + if (event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click") { + return; + } + if (event.namespace) { + namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + event.liveFired = this; + var live = events.live.slice(0); + for (j = 0; j < live.length; j++) { + handleObj = live[j]; + if (handleObj.origType.replace(rnamespaces, "") === event.type) { + selectors.push(handleObj.selector); + } else { + live.splice(j--, 1); + } + } + match = jQuery(event.target).closest(selectors, event.currentTarget); + for (i = 0, l = match.length; i < l; i++) { + close = match[i]; + for (j = 0; j < live.length; j++) { + handleObj = live[j]; + if (close.selector === handleObj.selector && (!namespace || namespace.test(handleObj.namespace)) && !close.elem.disabled) { + elem = close.elem; + related = null; + if (handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave") { + event.type = handleObj.preType; + related = jQuery(event.relatedTarget).closest(handleObj.selector)[0]; + if (related && jQuery.contains(elem, related)) { + related = elem; + } + } + if (!related || related !== elem) { + elems.push({ + elem: elem, + handleObj: handleObj, + level: close.level + }); + } + } + } + } + for (i = 0, l = elems.length; i < l; i++) { + match = elems[i]; + if (maxLevel && match.level > maxLevel) { + break; + } + event.currentTarget = match.elem; + event.data = match.handleObj.data; + event.handleObj = match.handleObj; + ret = match.handleObj.origHandler.apply(match.elem, arguments); + if (ret === false || event.isPropagationStopped()) { + maxLevel = match.level; + if (ret === false) { + stop = false; + } + if (event.isImmediatePropagationStopped()) { + break; + } + } + } + return stop; + } + function liveConvert(type, selector) { + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); + } + jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error").split(" "), function anonymous__189(i, name) { + jQuery.fn[name] = function anonymous__190(data, fn) { + if (fn == null) { + fn = data; + data = null; + } + return arguments.length > 0 ? this.bind(name, data, fn) : this.trigger(name); + }; + if (jQuery.attrFn) { + jQuery.attrFn[name] = true; + } + }); + (function anonymous__191() { + var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true, rBackslash = /\\/g, rNonWord = /\W/; + [ 0, 0 ].sort(function anonymous__192() { + baseHasDuplicate = false; + return 0; + }); + var Sizzle = function anonymous__193(selector, context, results, seed) { + results = results || []; + context = context || document; + var origContext = context; + if (context.nodeType !== 1 && context.nodeType !== 9) { + return []; + } + if (!selector || typeof selector !== "string") { + return results; + } + var m, set, checkSet, extra, ret, cur, pop, i, prune = true, contextXML = Sizzle.isXML(context), parts = [], soFar = selector; + do { + chunker.exec(""); + m = chunker.exec(soFar); + if (m) { + soFar = m[3]; + parts.push(m[1]); + if (m[2]) { + extra = m[3]; + break; + } + } + } while (m); + if (parts.length > 1 && origPOS.exec(selector)) { + if (parts.length === 2 && Expr.relative[parts[0]]) { + set = posProcess(parts[0] + parts[1], context); + } else { + set = Expr.relative[parts[0]] ? [ context ] : Sizzle(parts.shift(), context); + while (parts.length) { + selector = parts.shift(); + if (Expr.relative[selector]) { + selector += parts.shift(); + } + set = posProcess(selector, set); + } + } + } else { + if (!seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1])) { + ret = Sizzle.find(parts.shift(), context, contextXML); + context = ret.expr ? Sizzle.filter(ret.expr, ret.set)[0] : ret.set[0]; + } + if (context) { + ret = seed ? { + expr: parts.pop(), + set: makeArray(seed) + } : Sizzle.find(parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML); + set = ret.expr ? Sizzle.filter(ret.expr, ret.set) : ret.set; + if (parts.length > 0) { + checkSet = makeArray(set); + } else { + prune = false; + } + while (parts.length) { + cur = parts.pop(); + pop = cur; + if (!Expr.relative[cur]) { + cur = ""; + } else { + pop = parts.pop(); + } + if (pop == null) { + pop = context; + } + Expr.relative[cur](checkSet, pop, contextXML); + } + } else { + checkSet = parts = []; + } + } + if (!checkSet) { + checkSet = set; + } + if (!checkSet) { + Sizzle.error(cur || selector); + } + if (toString.call(checkSet) === "[object Array]") { + if (!prune) { + results.push.apply(results, checkSet); + } else if (context && context.nodeType === 1) { + for (i = 0; checkSet[i] != null; i++) { + if (checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i]))) { + results.push(set[i]); + } + } + } else { + for (i = 0; checkSet[i] != null; i++) { + if (checkSet[i] && checkSet[i].nodeType === 1) { + results.push(set[i]); + } + } + } + } else { + makeArray(checkSet, results); + } + if (extra) { + Sizzle(extra, origContext, results, seed); + Sizzle.uniqueSort(results); + } + return results; + }; + Sizzle.uniqueSort = function anonymous__194(results) { + if (sortOrder) { + hasDuplicate = baseHasDuplicate; + results.sort(sortOrder); + if (hasDuplicate) { + for (var i = 1; i < results.length; i++) { + if (results[i] === results[i - 1]) { + results.splice(i--, 1); + } + } + } + } + return results; + }; + Sizzle.matches = function anonymous__195(expr, set) { + return Sizzle(expr, null, null, set); + }; + Sizzle.matchesSelector = function anonymous__196(node, expr) { + return Sizzle(expr, null, null, [ node ]).length > 0; + }; + Sizzle.find = function anonymous__197(expr, context, isXML) { + var set; + if (!expr) { + return []; + } + for (var i = 0, l = Expr.order.length; i < l; i++) { + var match, type = Expr.order[i]; + if (match = Expr.leftMatch[type].exec(expr)) { + var left = match[1]; + match.splice(1, 1); + if (left.substr(left.length - 1) !== "\\") { + match[1] = (match[1] || "").replace(rBackslash, ""); + set = Expr.find[type](match, context, isXML); + if (set != null) { + expr = expr.replace(Expr.match[type], ""); + break; + } + } + } + } + if (!set) { + set = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName("*") : []; + } + return { + set: set, + expr: expr + }; + }; + Sizzle.filter = function anonymous__198(expr, set, inplace, not) { + var match, anyFound, old = expr, result = [], curLoop = set, isXMLFilter = set && set[0] && Sizzle.isXML(set[0]); + while (expr && set.length) { + for (var type in Expr.filter) { + if ((match = Expr.leftMatch[type].exec(expr)) != null && match[2]) { + var found, item, filter, left; + filter = Expr.filter[type], left = match[1]; + anyFound = false; + match.splice(1, 1); + if (left.substr(left.length - 1) === "\\") { + continue; + } + if (curLoop === result) { + result = []; + } + if (Expr.preFilter[type]) { + match = Expr.preFilter[type](match, curLoop, inplace, result, not, isXMLFilter); + if (!match) { + anyFound = found = true; + } else if (match === true) { + continue; + } + } + if (match) { + var i; + for (i = 0; (item = curLoop[i]) != null; i++) { + if (item) { + found = filter(item, match, i, curLoop); + var pass; + pass = not ^ !!found; + if (inplace && found != null) { + if (pass) { + anyFound = true; + } else { + curLoop[i] = false; + } + } else if (pass) { + result.push(item); + anyFound = true; + } + } + } + } + if (found !== undefined) { + if (!inplace) { + curLoop = result; + } + expr = expr.replace(Expr.match[type], ""); + if (!anyFound) { + return []; + } + break; + } + } + } + if (expr === old) { + if (anyFound == null) { + Sizzle.error(expr); + } else { + break; + } + } + old = expr; + } + return curLoop; + }; + Sizzle.error = function anonymous__199(msg) { + throw "Syntax error, unrecognized expression: " + msg; + }; + var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + leftMatch: {}, + attrMap: { + "class": "className", + "for": "htmlFor" + }, + attrHandle: { + href: function anonymous__200(elem) { + return elem.getAttribute("href"); + }, + type: function anonymous__201(elem) { + return elem.getAttribute("type"); + } + }, + relative: { + "+": function anonymous__202(checkSet, part) { + var isPartStr = typeof part === "string", isTag = isPartStr && !rNonWord.test(part), isPartStrNotTag = isPartStr && !isTag; + if (isTag) { + part = part.toLowerCase(); + } + for (var i = 0, l = checkSet.length, elem; i < l; i++) { + if (elem = checkSet[i]) { + while ((elem = elem.previousSibling) && elem.nodeType !== 1) {} + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? elem || false : elem === part; + } + } + if (isPartStrNotTag) { + Sizzle.filter(part, checkSet, true); + } + }, + ">": function anonymous__203(checkSet, part) { + var elem, isPartStr = typeof part === "string", i = 0, l = checkSet.length; + if (isPartStr && !rNonWord.test(part)) { + part = part.toLowerCase(); + for (; i < l; i++) { + elem = checkSet[i]; + if (elem) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + } else { + for (; i < l; i++) { + elem = checkSet[i]; + if (elem) { + checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; + } + } + if (isPartStr) { + Sizzle.filter(part, checkSet, true); + } + } + }, + "": function anonymous__204(checkSet, part, isXML) { + var nodeCheck, doneName = done++, checkFn = dirCheck; + if (typeof part === "string" && !rNonWord.test(part)) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); + }, + "~": function anonymous__205(checkSet, part, isXML) { + var nodeCheck, doneName = done++, checkFn = dirCheck; + if (typeof part === "string" && !rNonWord.test(part)) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); + } + }, + find: { + ID: function anonymous__206(match, context, isXML) { + if (typeof context.getElementById !== "undefined" && !isXML) { + var m = context.getElementById(match[1]); + return m && m.parentNode ? [ m ] : []; + } + }, + NAME: function anonymous__207(match, context) { + if (typeof context.getElementsByName !== "undefined") { + var ret = [], results = context.getElementsByName(match[1]); + for (var i = 0, l = results.length; i < l; i++) { + if (results[i].getAttribute("name") === match[1]) { + ret.push(results[i]); + } + } + return ret.length === 0 ? null : ret; + } + }, + TAG: function anonymous__208(match, context) { + if (typeof context.getElementsByTagName !== "undefined") { + return context.getElementsByTagName(match[1]); + } + } + }, + preFilter: { + CLASS: function anonymous__209(match, curLoop, inplace, result, not, isXML) { + match = " " + match[1].replace(rBackslash, "") + " "; + if (isXML) { + return match; + } + for (var i = 0, elem; (elem = curLoop[i]) != null; i++) { + if (elem) { + if (not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0)) { + if (!inplace) { + result.push(elem); + } + } else if (inplace) { + curLoop[i] = false; + } + } + } + return false; + }, + ID: function anonymous__210(match) { + return match[1].replace(rBackslash, ""); + }, + TAG: function anonymous__211(match, curLoop) { + return match[1].replace(rBackslash, "").toLowerCase(); + }, + CHILD: function anonymous__212(match) { + if (match[1] === "nth") { + if (!match[2]) { + Sizzle.error(match[0]); + } + match[2] = match[2].replace(/^\+|\s*/g, ""); + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || !/\D/.test(match[2]) && "0n+" + match[2] || match[2]); + match[2] = test[1] + (test[2] || 1) - 0; + match[3] = test[3] - 0; + } else if (match[2]) { + Sizzle.error(match[0]); + } + match[0] = done++; + return match; + }, + ATTR: function anonymous__213(match, curLoop, inplace, result, not, isXML) { + var name = match[1] = match[1].replace(rBackslash, ""); + if (!isXML && Expr.attrMap[name]) { + match[1] = Expr.attrMap[name]; + } + match[4] = (match[4] || match[5] || "").replace(rBackslash, ""); + if (match[2] === "~=") { + match[4] = " " + match[4] + " "; + } + return match; + }, + PSEUDO: function anonymous__214(match, curLoop, inplace, result, not) { + if (match[1] === "not") { + if ((chunker.exec(match[3]) || "").length > 1 || /^\w/.test(match[3])) { + match[3] = Sizzle(match[3], null, null, curLoop); + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + if (!inplace) { + result.push.apply(result, ret); + } + return false; + } + } else if (Expr.match.POS.test(match[0]) || Expr.match.CHILD.test(match[0])) { + return true; + } + return match; + }, + POS: function anonymous__215(match) { + match.unshift(true); + return match; + } + }, + filters: { + enabled: function anonymous__216(elem) { + return elem.disabled === false && elem.type !== "hidden"; + }, + disabled: function anonymous__217(elem) { + return elem.disabled === true; + }, + checked: function anonymous__218(elem) { + return elem.checked === true; + }, + selected: function anonymous__219(elem) { + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + return elem.selected === true; + }, + parent: function anonymous__220(elem) { + return !!elem.firstChild; + }, + empty: function anonymous__221(elem) { + return !elem.firstChild; + }, + has: function anonymous__222(elem, i, match) { + return !!Sizzle(match[3], elem).length; + }, + header: function anonymous__223(elem) { + return /h\d/i.test(elem.nodeName); + }, + text: function anonymous__224(elem) { + var attr = elem.getAttribute("type"), type = elem.type; + return elem.nodeName.toLowerCase() === "input" && "text" === type && (attr === type || attr === null); + }, + radio: function anonymous__225(elem) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + checkbox: function anonymous__226(elem) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + file: function anonymous__227(elem) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + password: function anonymous__228(elem) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + submit: function anonymous__229(elem) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + image: function anonymous__230(elem) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + reset: function anonymous__231(elem) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + button: function anonymous__232(elem) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + input: function anonymous__233(elem) { + return /input|select|textarea|button/i.test(elem.nodeName); + }, + focus: function anonymous__234(elem) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function anonymous__235(elem, i) { + return i === 0; + }, + last: function anonymous__236(elem, i, match, array) { + return i === array.length - 1; + }, + even: function anonymous__237(elem, i) { + return i % 2 === 0; + }, + odd: function anonymous__238(elem, i) { + return i % 2 === 1; + }, + lt: function anonymous__239(elem, i, match) { + return i < match[3] - 0; + }, + gt: function anonymous__240(elem, i, match) { + return i > match[3] - 0; + }, + nth: function anonymous__241(elem, i, match) { + return match[3] - 0 === i; + }, + eq: function anonymous__242(elem, i, match) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function anonymous__243(elem, match, i, array) { + var name = match[1], filter = Expr.filters[name]; + if (filter) { + return filter(elem, i, match, array); + } else if (name === "contains") { + return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + } else if (name === "not") { + var not = match[3]; + for (var j = 0, l = not.length; j < l; j++) { + if (not[j] === elem) { + return false; + } + } + return true; + } else { + Sizzle.error(name); + } + }, + CHILD: function anonymous__244(elem, match) { + var type = match[1], node = elem; + switch (type) { + case "only": + case "first": + while (node = node.previousSibling) { + if (node.nodeType === 1) { + return false; + } + } + if (type === "first") { + return true; + } + node = elem; + case "last": + while (node = node.nextSibling) { + if (node.nodeType === 1) { + return false; + } + } + return true; + case "nth": + var first = match[2], last = match[3]; + if (first === 1 && last === 0) { + return true; + } + var doneName = match[0], parent = elem.parentNode; + if (parent && (parent.sizcache !== doneName || !elem.nodeIndex)) { + var count = 0; + for (node = parent.firstChild; node; node = node.nextSibling) { + if (node.nodeType === 1) { + node.nodeIndex = ++count; + } + } + parent.sizcache = doneName; + } + var diff = elem.nodeIndex - last; + if (first === 0) { + return diff === 0; + } else { + return diff % first === 0 && diff / first >= 0; + } + } + }, + ID: function anonymous__245(elem, match) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + TAG: function anonymous__246(elem, match) { + return match === "*" && elem.nodeType === 1 || elem.nodeName.toLowerCase() === match; + }, + CLASS: function anonymous__247(elem, match) { + return (" " + (elem.className || elem.getAttribute("class")) + " ").indexOf(match) > -1; + }, + ATTR: function anonymous__248(elem, match) { + var name = match[1], result = Expr.attrHandle[name] ? Expr.attrHandle[name](elem) : elem[name] != null ? elem[name] : elem.getAttribute(name), value = result + "", type = match[2], check = match[4]; + return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value !== check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; + }, + POS: function anonymous__249(elem, match, i, array) { + var name = match[2], filter = Expr.setFilters[name]; + if (filter) { + return filter(elem, i, match, array); + } + } + } + }; + var origPOS = Expr.match.POS, fescape = function anonymous__250(all, num) { + return "\\" + (num - 0 + 1); + }; + for (var type in Expr.match) { + (function _forin_body_8(type) { Expr.match[type] = new RegExp(Expr.match[type].source + /(?![^\[]*\])(?![^\(]*\))/.source); + Expr.leftMatch[type] = new RegExp(/(^(?:.|\r|\n)*?)/.source + Expr.match[type].source.replace(/\\(\d+)/g, fescape)); })(type); + } + var makeArray = function anonymous__251(array, results) { + array = Array.prototype.slice.call(array, 0); + if (results) { + results.push.apply(results, array); + return results; + } + return array; + }; + try { + Array.prototype.slice.call(document.documentElement.childNodes, 0)[0].nodeType; + } catch (e) { + makeArray = function anonymous__252(array, results) { + var i = 0, ret = results || []; + if (toString.call(array) === "[object Array]") { + Array.prototype.push.apply(ret, array); + } else { + if (typeof array.length === "number") { + for (var l = array.length; i < l; i++) { + ret.push(array[i]); + } + } else { + for (; array[i]; i++) { + ret.push(array[i]); + } + } + } + return ret; + }; + } + var sortOrder, siblingCheck; + if (document.documentElement.compareDocumentPosition) { + sortOrder = function anonymous__253(a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + if (!a.compareDocumentPosition || !b.compareDocumentPosition) { + return a.compareDocumentPosition ? -1 : 1; + } + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + } else { + sortOrder = function anonymous__254(a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } else if (a.sourceIndex && b.sourceIndex) { + return a.sourceIndex - b.sourceIndex; + } + var al, bl, ap = [], bp = [], aup = a.parentNode, bup = b.parentNode, cur = aup; + if (aup === bup) { + return siblingCheck(a, b); + } else if (!aup) { + return -1; + } else if (!bup) { + return 1; + } + while (cur) { + ap.unshift(cur); + cur = cur.parentNode; + } + cur = bup; + while (cur) { + bp.unshift(cur); + cur = cur.parentNode; + } + al = ap.length; + bl = bp.length; + for (var i = 0; i < al && i < bl; i++) { + if (ap[i] !== bp[i]) { + return siblingCheck(ap[i], bp[i]); + } + } + return i === al ? siblingCheck(a, bp[i], -1) : siblingCheck(ap[i], b, 1); + }; + siblingCheck = function anonymous__255(a, b, ret) { + if (a === b) { + return ret; + } + var cur = a.nextSibling; + while (cur) { + if (cur === b) { + return -1; + } + cur = cur.nextSibling; + } + return 1; + }; + } + Sizzle.getText = function anonymous__256(elems) { + var ret = "", elem; + for (var i = 0; elems[i]; i++) { + elem = elems[i]; + if (elem.nodeType === 3 || elem.nodeType === 4) { + ret += elem.nodeValue; + } else if (elem.nodeType !== 8) { + ret += Sizzle.getText(elem.childNodes); + } + } + return ret; + }; + (function anonymous__257() { + var form = document.createElement("div"), id = "script" + (new Date).getTime(), root = document.documentElement; + form.innerHTML = ""; + root.insertBefore(form, root.firstChild); + if (document.getElementById(id)) { + Expr.find.ID = function anonymous__258(match, context, isXML) { + if (typeof context.getElementById !== "undefined" && !isXML) { + var m = context.getElementById(match[1]); + return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [ m ] : undefined : []; + } + }; + Expr.filter.ID = function anonymous__259(elem, match) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + root.removeChild(form); + root = form = null; + })(); + (function anonymous__260() { + var div = document.createElement("div"); + div.appendChild(document.createComment("")); + if (div.getElementsByTagName("*").length > 0) { + Expr.find.TAG = function anonymous__261(match, context) { + var results = context.getElementsByTagName(match[1]); + if (match[1] === "*") { + var tmp = []; + for (var i = 0; results[i]; i++) { + if (results[i].nodeType === 1) { + tmp.push(results[i]); + } + } + results = tmp; + } + return results; + }; + } + div.innerHTML = ""; + if (div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#") { + Expr.attrHandle.href = function anonymous__262(elem) { + return elem.getAttribute("href", 2); + }; + } + div = null; + })(); + if (document.querySelectorAll) { + (function anonymous__263() { + var oldSizzle = Sizzle, div = document.createElement("div"), id = "__sizzle__"; + div.innerHTML = "

"; + if (div.querySelectorAll && div.querySelectorAll(".TEST").length === 0) { + return; + } + Sizzle = function anonymous__264(query, context, extra, seed) { + context = context || document; + if (!seed && !Sizzle.isXML(context)) { + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(query); + if (match && (context.nodeType === 1 || context.nodeType === 9)) { + if (match[1]) { + return makeArray(context.getElementsByTagName(query), extra); + } else if (match[2] && Expr.find.CLASS && context.getElementsByClassName) { + return makeArray(context.getElementsByClassName(match[2]), extra); + } + } + if (context.nodeType === 9) { + if (query === "body" && context.body) { + return makeArray([ context.body ], extra); + } else if (match && match[3]) { + var elem = context.getElementById(match[3]); + if (elem && elem.parentNode) { + if (elem.id === match[3]) { + return makeArray([ elem ], extra); + } + } else { + return makeArray([], extra); + } + } + try { + return makeArray(context.querySelectorAll(query), extra); + } catch (qsaError) {} + } else if (context.nodeType === 1 && context.nodeName.toLowerCase() !== "object") { + var oldContext = context, old = context.getAttribute("id"), nid = old || id, hasParent = context.parentNode, relativeHierarchySelector = /^\s*[+~]/.test(query); + if (!old) { + context.setAttribute("id", nid); + } else { + nid = nid.replace(/'/g, "\\$&"); + } + if (relativeHierarchySelector && hasParent) { + context = context.parentNode; + } + try { + if (!relativeHierarchySelector || hasParent) { + return makeArray(context.querySelectorAll("[id='" + nid + "'] " + query), extra); + } + } catch (pseudoError) {} finally { + if (!old) { + oldContext.removeAttribute("id"); + } + } + } + } + return oldSizzle(query, context, extra, seed); + }; + for (var prop in oldSizzle) { + (function _forin_body_9(prop) { Sizzle[prop] = oldSizzle[prop]; })(prop); + } + div = null; + })(); + } + (function anonymous__265() { + var html = document.documentElement, matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + if (matches) { + var disconnectedMatch = !matches.call(document.createElement("div"), "div"), pseudoWorks = false; + try { + matches.call(document.documentElement, "[test!='']:sizzle"); + } catch (pseudoError) { + pseudoWorks = true; + } + Sizzle.matchesSelector = function anonymous__266(node, expr) { + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + if (!Sizzle.isXML(node)) { + try { + if (pseudoWorks || !Expr.match.PSEUDO.test(expr) && !/!=/.test(expr)) { + var ret = matches.call(node, expr); + if (ret || !disconnectedMatch || node.document && node.document.nodeType !== 11) { + return ret; + } + } + } catch (e) {} + } + return Sizzle(expr, null, null, [ node ]).length > 0; + }; + } + })(); + (function anonymous__267() { + var div = document.createElement("div"); + div.innerHTML = "
"; + if (!div.getElementsByClassName || div.getElementsByClassName("e").length === 0) { + return; + } + div.lastChild.className = "e"; + if (div.getElementsByClassName("e").length === 1) { + return; + } + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function anonymous__268(match, context, isXML) { + if (typeof context.getElementsByClassName !== "undefined" && !isXML) { + return context.getElementsByClassName(match[1]); + } + }; + div = null; + })(); + function dirNodeCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) { + for (var i = 0, l = checkSet.length; i < l; i++) { + var elem = checkSet[i]; + if (elem) { + var match = false; + elem = elem[dir]; + while (elem) { + if (elem.sizcache === doneName) { + match = checkSet[elem.sizset]; + break; + } + if (elem.nodeType === 1 && !isXML) { + elem.sizcache = doneName; + elem.sizset = i; + } + if (elem.nodeName.toLowerCase() === cur) { + match = elem; + break; + } + elem = elem[dir]; + } + checkSet[i] = match; + } + } + } + function dirCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) { + for (var i = 0, l = checkSet.length; i < l; i++) { + var elem = checkSet[i]; + if (elem) { + var match = false; + elem = elem[dir]; + while (elem) { + if (elem.sizcache === doneName) { + match = checkSet[elem.sizset]; + break; + } + if (elem.nodeType === 1) { + if (!isXML) { + elem.sizcache = doneName; + elem.sizset = i; + } + if (typeof cur !== "string") { + if (elem === cur) { + match = true; + break; + } + } else if (Sizzle.filter(cur, [ elem ]).length > 0) { + match = elem; + break; + } + } + elem = elem[dir]; + } + checkSet[i] = match; + } + } + } + if (document.documentElement.contains) { + Sizzle.contains = function anonymous__269(a, b) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + } else if (document.documentElement.compareDocumentPosition) { + Sizzle.contains = function anonymous__270(a, b) { + return !!(a.compareDocumentPosition(b) & 16); + }; + } else { + Sizzle.contains = function anonymous__271() { + return false; + }; + } + Sizzle.isXML = function anonymous__272(elem) { + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; + }; + var posProcess = function anonymous__273(selector, context) { + var match, tmpSet = [], later = "", root = context.nodeType ? [ context ] : context; + while (match = Expr.match.PSEUDO.exec(selector)) { + later += match[0]; + selector = selector.replace(Expr.match.PSEUDO, ""); + } + selector = Expr.relative[selector] ? selector + "*" : selector; + for (var i = 0, l = root.length; i < l; i++) { + Sizzle(selector, root[i], tmpSet); + } + return Sizzle.filter(later, tmpSet); + }; + jQuery.find = Sizzle; + jQuery.expr = Sizzle.selectors; + jQuery.expr[":"] = jQuery.expr.filters; + jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + })(); + var runtil = /Until$/, rparentsprev = /^(?:parents|prevUntil|prevAll)/, rmultiselector = /,/, isSimple = /^.[^:#\[\.,]*$/, slice = Array.prototype.slice, POS = jQuery.expr.match.POS, guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + jQuery.fn.extend({ + find: function anonymous__274(selector) { + var self = this, i, l; + if (typeof selector !== "string") { + return jQuery(selector).filter(function anonymous__275() { + for (i = 0, l = self.length; i < l; i++) { + if (jQuery.contains(self[i], this)) { + return true; + } + } + }); + } + var ret = this.pushStack("", "find", selector), length, n, r; + for (i = 0, l = this.length; i < l; i++) { + length = ret.length; + jQuery.find(selector, this[i], ret); + if (i > 0) { + for (n = length; n < ret.length; n++) { + for (r = 0; r < length; r++) { + if (ret[r] === ret[n]) { + ret.splice(n--, 1); + break; + } + } + } + } + } + return ret; + }, + has: function anonymous__276(target) { + var targets = jQuery(target); + return this.filter(function anonymous__277() { + for (var i = 0, l = targets.length; i < l; i++) { + if (jQuery.contains(this, targets[i])) { + return true; + } + } + }); + }, + not: function anonymous__278(selector) { + return this.pushStack(winnow(this, selector, false), "not", selector); + }, + filter: function anonymous__279(selector) { + return this.pushStack(winnow(this, selector, true), "filter", selector); + }, + is: function anonymous__280(selector) { + return !!selector && (typeof selector === "string" ? jQuery.filter(selector, this).length > 0 : this.filter(selector).length > 0); + }, + closest: function anonymous__281(selectors, context) { + var ret = [], i, l, cur = this[0]; + if (jQuery.isArray(selectors)) { + var match, selector, matches = {}, level = 1; + if (cur && selectors.length) { + for (i = 0, l = selectors.length; i < l; i++) { + selector = selectors[i]; + if (!matches[selector]) { + matches[selector] = POS.test(selector) ? jQuery(selector, context || this.context) : selector; + } + } + while (cur && cur.ownerDocument && cur !== context) { + for (selector in matches) { + match = matches[selector]; + if (match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match)) { + ret.push({ + selector: selector, + elem: cur, + level: level + }); + } + } + cur = cur.parentNode; + level++; + } + } + return ret; + } + var pos = POS.test(selectors) || typeof selectors !== "string" ? jQuery(selectors, context || this.context) : 0; + for (i = 0, l = this.length; i < l; i++) { + cur = this[i]; + while (cur) { + if (pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors)) { + ret.push(cur); + break; + } else { + cur = cur.parentNode; + if (!cur || !cur.ownerDocument || cur === context || cur.nodeType === 11) { + break; + } + } + } + } + ret = ret.length > 1 ? jQuery.unique(ret) : ret; + return this.pushStack(ret, "closest", selectors); + }, + index: function anonymous__282(elem) { + if (!elem || typeof elem === "string") { + return jQuery.inArray(this[0], elem ? jQuery(elem) : this.parent().children()); + } + return jQuery.inArray(elem.jquery ? elem[0] : elem, this); + }, + add: function anonymous__283(selector, context) { + var set = typeof selector === "string" ? jQuery(selector, context) : jQuery.makeArray(selector && selector.nodeType ? [ selector ] : selector), all = jQuery.merge(this.get(), set); + return this.pushStack(isDisconnected(set[0]) || isDisconnected(all[0]) ? all : jQuery.unique(all)); + }, + andSelf: function anonymous__284() { + return this.add(this.prevObject); + } + }); + function isDisconnected(node) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; + } + jQuery.each({ + parent: function anonymous__285(elem) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function anonymous__286(elem) { + return jQuery.dir(elem, "parentNode"); + }, + parentsUntil: function anonymous__287(elem, i, until) { + return jQuery.dir(elem, "parentNode", until); + }, + next: function anonymous__288(elem) { + return jQuery.nth(elem, 2, "nextSibling"); + }, + prev: function anonymous__289(elem) { + return jQuery.nth(elem, 2, "previousSibling"); + }, + nextAll: function anonymous__290(elem) { + return jQuery.dir(elem, "nextSibling"); + }, + prevAll: function anonymous__291(elem) { + return jQuery.dir(elem, "previousSibling"); + }, + nextUntil: function anonymous__292(elem, i, until) { + return jQuery.dir(elem, "nextSibling", until); + }, + prevUntil: function anonymous__293(elem, i, until) { + return jQuery.dir(elem, "previousSibling", until); + }, + siblings: function anonymous__294(elem) { + return jQuery.sibling(elem.parentNode.firstChild, elem); + }, + children: function anonymous__295(elem) { + return jQuery.sibling(elem.firstChild); + }, + contents: function anonymous__296(elem) { + return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.makeArray(elem.childNodes); + } + }, function anonymous__297(name, fn) { + jQuery.fn[name] = function anonymous__298(until, selector) { + var ret = jQuery.map(this, fn, until), args = slice.call(arguments); + if (!runtil.test(name)) { + selector = until; + } + if (selector && typeof selector === "string") { + ret = jQuery.filter(selector, ret); + } + ret = this.length > 1 && !guaranteedUnique[name] ? jQuery.unique(ret) : ret; + if ((this.length > 1 || rmultiselector.test(selector)) && rparentsprev.test(name)) { + ret = ret.reverse(); + } + return this.pushStack(ret, name, args.join(",")); + }; + }); + jQuery.extend({ + filter: function anonymous__299(expr, elems, not) { + if (not) { + expr = ":not(" + expr + ")"; + } + return elems.length === 1 ? jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : jQuery.find.matches(expr, elems); + }, + dir: function anonymous__300(elem, dir, until) { + var matched = [], cur = elem[dir]; + while (cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery(cur).is(until))) { + if (cur.nodeType === 1) { + matched.push(cur); + } + cur = cur[dir]; + } + return matched; + }, + nth: function anonymous__301(cur, result, dir, elem) { + result = result || 1; + var num = 0; + for (; cur; cur = cur[dir]) { + if (cur.nodeType === 1 && ++num === result) { + break; + } + } + return cur; + }, + sibling: function anonymous__302(n, elem) { + var r = []; + for (; n; n = n.nextSibling) { + if (n.nodeType === 1 && n !== elem) { + r.push(n); + } + } + return r; + } + }); + function winnow(elements, qualifier, keep) { + qualifier = qualifier || 0; + if (jQuery.isFunction(qualifier)) { + return jQuery.grep(elements, function anonymous__303(elem, i) { + var retVal = !!qualifier.call(elem, i, elem); + return retVal === keep; + }); + } else if (qualifier.nodeType) { + return jQuery.grep(elements, function anonymous__304(elem, i) { + return elem === qualifier === keep; + }); + } else if (typeof qualifier === "string") { + var filtered = jQuery.grep(elements, function anonymous__305(elem) { + return elem.nodeType === 1; + }); + if (isSimple.test(qualifier)) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter(qualifier, filtered); + } + } + return jQuery.grep(elements, function anonymous__306(elem, i) { + return jQuery.inArray(elem, qualifier) >= 0 === keep; + }); + } + var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rleadingWhitespace = /^\s+/, rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, rtagName = /<([\w:]+)/, rtbody = /", "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + wrapMap.optgroup = wrapMap.option; + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + if (!jQuery.support.htmlSerialize) { + wrapMap._default = [ 1, "div
", "
" ]; + } + jQuery.fn.extend({ + text: function anonymous__307(text) { + if (jQuery.isFunction(text)) { + return this.each(function anonymous__308(i) { + var self = jQuery(this); + self.text(text.call(this, i, self.text())); + }); + } + if (typeof text !== "object" && text !== undefined) { + return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text)); + } + return jQuery.text(this); + }, + wrapAll: function anonymous__309(html) { + if (jQuery.isFunction(html)) { + return this.each(function anonymous__310(i) { + jQuery(this).wrapAll(html.call(this, i)); + }); + } + if (this[0]) { + var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true); + if (this[0].parentNode) { + wrap.insertBefore(this[0]); + } + wrap.map(function anonymous__311() { + var elem = this; + while (elem.firstChild && elem.firstChild.nodeType === 1) { + elem = elem.firstChild; + } + return elem; + }).append(this); + } + return this; + }, + wrapInner: function anonymous__312(html) { + if (jQuery.isFunction(html)) { + return this.each(function anonymous__313(i) { + jQuery(this).wrapInner(html.call(this, i)); + }); + } + return this.each(function anonymous__314() { + var self = jQuery(this), contents = self.contents(); + if (contents.length) { + contents.wrapAll(html); + } else { + self.append(html); + } + }); + }, + wrap: function anonymous__315(html) { + return this.each(function anonymous__316() { + jQuery(this).wrapAll(html); + }); + }, + unwrap: function anonymous__317() { + return this.parent().each(function anonymous__318() { + if (!jQuery.nodeName(this, "body")) { + jQuery(this).replaceWith(this.childNodes); + } + }).end(); + }, + append: function anonymous__319() { + return this.domManip(arguments, true, function anonymous__320(elem) { + if (this.nodeType === 1) { + this.appendChild(elem); + } + }); + }, + prepend: function anonymous__321() { + return this.domManip(arguments, true, function anonymous__322(elem) { + if (this.nodeType === 1) { + this.insertBefore(elem, this.firstChild); + } + }); + }, + before: function anonymous__323() { + if (this[0] && this[0].parentNode) { + return this.domManip(arguments, false, function anonymous__324(elem) { + this.parentNode.insertBefore(elem, this); + }); + } else if (arguments.length) { + var set = jQuery(arguments[0]); + set.push.apply(set, this.toArray()); + return this.pushStack(set, "before", arguments); + } + }, + after: function anonymous__325() { + if (this[0] && this[0].parentNode) { + return this.domManip(arguments, false, function anonymous__326(elem) { + this.parentNode.insertBefore(elem, this.nextSibling); + }); + } else if (arguments.length) { + var set = this.pushStack(this, "after", arguments); + set.push.apply(set, jQuery(arguments[0]).toArray()); + return set; + } + }, + remove: function anonymous__327(selector, keepData) { + for (var i = 0, elem; (elem = this[i]) != null; i++) { + if (!selector || jQuery.filter(selector, [ elem ]).length) { + if (!keepData && elem.nodeType === 1) { + jQuery.cleanData(elem.getElementsByTagName("*")); + jQuery.cleanData([ elem ]); + } + if (elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + } + return this; + }, + empty: function anonymous__328() { + for (var i = 0, elem; (elem = this[i]) != null; i++) { + if (elem.nodeType === 1) { + jQuery.cleanData(elem.getElementsByTagName("*")); + } + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + } + return this; + }, + clone: function anonymous__329(dataAndEvents, deepDataAndEvents) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + return this.map(function anonymous__330() { + return jQuery.clone(this, dataAndEvents, deepDataAndEvents); + }); + }, + html: function anonymous__331(value) { + if (value === undefined) { + return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(rinlinejQuery, "") : null; + } else if (typeof value === "string" && !rnocache.test(value) && (jQuery.support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || [ "", "" ])[1].toLowerCase()]) { + value = value.replace(rxhtmlTag, "<$1>"); + try { + for (var i = 0, l = this.length; i < l; i++) { + if (this[i].nodeType === 1) { + jQuery.cleanData(this[i].getElementsByTagName("*")); + this[i].innerHTML = value; + } + } + } catch (e) { + this.empty().append(value); + } + } else if (jQuery.isFunction(value)) { + this.each(function anonymous__332(i) { + var self = jQuery(this); + self.html(value.call(this, i, self.html())); + }); + } else { + this.empty().append(value); + } + return this; + }, + replaceWith: function anonymous__333(value) { + if (this[0] && this[0].parentNode) { + if (jQuery.isFunction(value)) { + return this.each(function anonymous__334(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith(value.call(this, i, old)); + }); + } + if (typeof value !== "string") { + value = jQuery(value).detach(); + } + return this.each(function anonymous__335() { + var next = this.nextSibling, parent = this.parentNode; + jQuery(this).remove(); + if (next) { + jQuery(next).before(value); + } else { + jQuery(parent).append(value); + } + }); + } else { + return this.length ? this.pushStack(jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value) : this; + } + }, + detach: function anonymous__336(selector) { + return this.remove(selector, true); + }, + domManip: function anonymous__337(args, table, callback) { + var results, first, fragment, parent, value = args[0], scripts = []; + if (!jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test(value)) { + return this.each(function anonymous__338() { + jQuery(this).domManip(args, table, callback, true); + }); + } + if (jQuery.isFunction(value)) { + return this.each(function anonymous__339(i) { + var self = jQuery(this); + args[0] = value.call(this, i, table ? self.html() : undefined); + self.domManip(args, table, callback); + }); + } + if (this[0]) { + parent = value && value.parentNode; + if (jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length) { + results = { + fragment: parent + }; + } else { + results = jQuery.buildFragment(args, this, scripts); + } + fragment = results.fragment; + if (fragment.childNodes.length === 1) { + first = fragment = fragment.firstChild; + } else { + first = fragment.firstChild; + } + if (first) { + table = table && jQuery.nodeName(first, "tr"); + for (var i = 0, l = this.length, lastIndex = l - 1; i < l; i++) { + callback.call(table ? root(this[i], first) : this[i], results.cacheable || l > 1 && i < lastIndex ? jQuery.clone(fragment, true, true) : fragment); + } + } + if (scripts.length) { + jQuery.each(scripts, evalScript); + } + } + return this; + } + }); + function root(elem, cur) { + return jQuery.nodeName(elem, "table") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem; + } + function cloneCopyEvent(src, dest) { + if (dest.nodeType !== 1 || !jQuery.hasData(src)) { + return; + } + var internalKey = jQuery.expando, oldData = jQuery.data(src), curData = jQuery.data(dest, oldData); + if (oldData = oldData[internalKey]) { + var events = oldData.events; + curData = curData[internalKey] = jQuery.extend({}, oldData); + if (events) { + delete curData.handle; + curData.events = {}; + for (var type in events) { + var i; + for (i = 0, l = events[type].length; i < l; i++) { + jQuery.event.add(dest, type + (events[type][i].namespace ? "." : "") + events[type][i].namespace, events[type][i], events[type][i].data); + } + } + } + } + } + function cloneFixAttributes(src, dest) { + var nodeName; + if (dest.nodeType !== 1) { + return; + } + if (dest.clearAttributes) { + dest.clearAttributes(); + } + if (dest.mergeAttributes) { + dest.mergeAttributes(src); + } + nodeName = dest.nodeName.toLowerCase(); + if (nodeName === "object") { + dest.outerHTML = src.outerHTML; + } else if (nodeName === "input" && (src.type === "checkbox" || src.type === "radio")) { + if (src.checked) { + dest.defaultChecked = dest.checked = src.checked; + } + if (dest.value !== src.value) { + dest.value = src.value; + } + } else if (nodeName === "option") { + dest.selected = src.defaultSelected; + } else if (nodeName === "input" || nodeName === "textarea") { + dest.defaultValue = src.defaultValue; + } + dest.removeAttribute(jQuery.expando); + } + jQuery.buildFragment = function anonymous__340(args, nodes, scripts) { + var fragment, cacheable, cacheresults, doc = nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document; + if (args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document && args[0].charAt(0) === "<" && !rnocache.test(args[0]) && (jQuery.support.checkClone || !rchecked.test(args[0]))) { + cacheable = true; + cacheresults = jQuery.fragments[args[0]]; + if (cacheresults && cacheresults !== 1) { + fragment = cacheresults; + } + } + if (!fragment) { + fragment = doc.createDocumentFragment(); + jQuery.clean(args, doc, fragment, scripts); + } + if (cacheable) { + jQuery.fragments[args[0]] = cacheresults ? fragment : 1; + } + return { + fragment: fragment, + cacheable: cacheable + }; + }; + jQuery.fragments = {}; + jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function anonymous__341(name, original) { + jQuery.fn[name] = function anonymous__342(selector) { + var ret = [], insert = jQuery(selector), parent = this.length === 1 && this[0].parentNode; + if (parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1) { + insert[original](this[0]); + return this; + } else { + for (var i = 0, l = insert.length; i < l; i++) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery(insert[i])[original](elems); + ret = ret.concat(elems); + } + return this.pushStack(ret, name, insert.selector); + } + }; + }); + function getAll(elem) { + if ("getElementsByTagName" in elem) { + return elem.getElementsByTagName("*"); + } else if ("querySelectorAll" in elem) { + return elem.querySelectorAll("*"); + } else { + return []; + } + } + function fixDefaultChecked(elem) { + if (elem.type === "checkbox" || elem.type === "radio") { + elem.defaultChecked = elem.checked; + } + } + function findInputs(elem) { + if (jQuery.nodeName(elem, "input")) { + fixDefaultChecked(elem); + } else if (elem.getElementsByTagName) { + jQuery.grep(elem.getElementsByTagName("input"), fixDefaultChecked); + } + } + jQuery.extend({ + clone: function anonymous__343(elem, dataAndEvents, deepDataAndEvents) { + var clone = elem.cloneNode(true), srcElements, destElements, i; + if ((!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { + cloneFixAttributes(elem, clone); + srcElements = getAll(elem); + destElements = getAll(clone); + for (i = 0; srcElements[i]; ++i) { + cloneFixAttributes(srcElements[i], destElements[i]); + } + } + if (dataAndEvents) { + cloneCopyEvent(elem, clone); + if (deepDataAndEvents) { + srcElements = getAll(elem); + destElements = getAll(clone); + for (i = 0; srcElements[i]; ++i) { + cloneCopyEvent(srcElements[i], destElements[i]); + } + } + } + return clone; + }, + clean: function anonymous__344(elems, context, fragment, scripts) { + var checkScriptType; + context = context || document; + if (typeof context.createElement === "undefined") { + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + } + var ret = [], j; + for (var i = 0, elem; (elem = elems[i]) != null; i++) { + if (typeof elem === "number") { + elem += ""; + } + if (!elem) { + continue; + } + if (typeof elem === "string") { + if (!rhtml.test(elem)) { + elem = context.createTextNode(elem); + } else { + elem = elem.replace(rxhtmlTag, "<$1>"); + var tag = (rtagName.exec(elem) || [ "", "" ])[1].toLowerCase(), wrap = wrapMap[tag] || wrapMap._default, depth = wrap[0], div = context.createElement("div"); + div.innerHTML = wrap[1] + elem + wrap[2]; + while (depth--) { + div = div.lastChild; + } + if (!jQuery.support.tbody) { + var hasBody = rtbody.test(elem), tbody = tag === "table" && !hasBody ? div.firstChild && div.firstChild.childNodes : wrap[1] === "" && !hasBody ? div.childNodes : []; + for (j = tbody.length - 1; j >= 0; --j) { + if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) { + tbody[j].parentNode.removeChild(tbody[j]); + } + } + } + if (!jQuery.support.leadingWhitespace && rleadingWhitespace.test(elem)) { + div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]), div.firstChild); + } + elem = div.childNodes; + } + } + var len; + if (!jQuery.support.appendChecked) { + if (elem[0] && typeof (len = elem.length) === "number") { + for (j = 0; j < len; j++) { + findInputs(elem[j]); + } + } else { + findInputs(elem); + } + } + if (elem.nodeType) { + ret.push(elem); + } else { + ret = jQuery.merge(ret, elem); + } + } + if (fragment) { + checkScriptType = function anonymous__345(elem) { + return !elem.type || rscriptType.test(elem.type); + }; + for (i = 0; ret[i]; i++) { + if (scripts && jQuery.nodeName(ret[i], "script") && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript")) { + scripts.push(ret[i].parentNode ? ret[i].parentNode.removeChild(ret[i]) : ret[i]); + } else { + if (ret[i].nodeType === 1) { + var jsTags = jQuery.grep(ret[i].getElementsByTagName("script"), checkScriptType); + ret.splice.apply(ret, [ i + 1, 0 ].concat(jsTags)); + } + fragment.appendChild(ret[i]); + } + } + } + return ret; + }, + cleanData: function anonymous__346(elems) { + var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special, deleteExpando = jQuery.support.deleteExpando; + for (var i = 0, elem; (elem = elems[i]) != null; i++) { + if (elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) { + continue; + } + id = elem[jQuery.expando]; + if (id) { + data = cache[id] && cache[id][internalKey]; + if (data && data.events) { + for (var type in data.events) { + if (special[type]) { + jQuery.event.remove(elem, type); + } else { + jQuery.removeEvent(elem, type, data.handle); + } + } + if (data.handle) { + data.handle.elem = null; + } + } + if (deleteExpando) { + delete elem[jQuery.expando]; + } else if (elem.removeAttribute) { + elem.removeAttribute(jQuery.expando); + } + delete cache[id]; + } + } + } + }); + function evalScript(i, elem) { + if (elem.src) { + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + } else { + jQuery.globalEval((elem.text || elem.textContent || elem.innerHTML || "").replace(rcleanScript, "/*$0*/")); + } + if (elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + var ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, rdashAlpha = /-([a-z])/ig, rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, rnum = /^-?\d/, rrelNum = /^[+\-]=/, rrelNumFilter = /[^+\-\.\de]+/g, cssShow = { + position: "absolute", + visibility: "hidden", + display: "block" + }, cssWidth = [ "Left", "Right" ], cssHeight = [ "Top", "Bottom" ], curCSS, getComputedStyle, currentStyle, fcamelCase = function anonymous__347(all, letter) { + return letter.toUpperCase(); + }; + jQuery.fn.css = function anonymous__348(name, value) { + if (arguments.length === 2 && value === undefined) { + return this; + } + return jQuery.access(this, name, value, true, function anonymous__349(elem, name, value) { + return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name); + }); + }; + jQuery.extend({ + cssHooks: { + opacity: { + get: function anonymous__350(elem, computed) { + if (computed) { + var ret = curCSS(elem, "opacity", "opacity"); + return ret === "" ? "1" : ret; + } else { + return elem.style.opacity; + } + } + } + }, + cssNumber: { + zIndex: true, + fontWeight: true, + opacity: true, + zoom: true, + lineHeight: true, + widows: true, + orphans: true + }, + cssProps: { + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + style: function anonymous__351(elem, name, value, extra) { + if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { + return; + } + var ret, type, origName = jQuery.camelCase(name), style = elem.style, hooks = jQuery.cssHooks[origName]; + name = jQuery.cssProps[origName] || origName; + if (value !== undefined) { + type = typeof value; + if (type === "number" && isNaN(value) || value == null) { + return; + } + if (type === "string" && rrelNum.test(value)) { + value = +value.replace(rrelNumFilter, "") + parseFloat(jQuery.css(elem, name)); + } + if (type === "number" && !jQuery.cssNumber[origName]) { + value += "px"; + } + if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value)) !== undefined) { + try { + style[name] = value; + } catch (e) {} + } + } else { + if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) { + return ret; + } + return style[name]; + } + }, + css: function anonymous__352(elem, name, extra) { + var ret, hooks; + name = jQuery.camelCase(name); + hooks = jQuery.cssHooks[name]; + name = jQuery.cssProps[name] || name; + if (name === "cssFloat") { + name = "float"; + } + if (hooks && "get" in hooks && (ret = hooks.get(elem, true, extra)) !== undefined) { + return ret; + } else if (curCSS) { + return curCSS(elem, name); + } + }, + swap: function anonymous__353(elem, options, callback) { + var old = {}; + for (var name in options) { + (function _forin_body_11(name) { old[name] = elem.style[name]; + elem.style[name] = options[name]; })(name); + } + callback.call(elem); + for (name in options) { + (function _forin_body_12(name) { elem.style[name] = old[name]; })(name); + } + }, + camelCase: function anonymous__354(string) { + return string.replace(rdashAlpha, fcamelCase); + } + }); + jQuery.curCSS = jQuery.css; + jQuery.each([ "height", "width" ], function anonymous__355(i, name) { + jQuery.cssHooks[name] = { + get: function anonymous__356(elem, computed, extra) { + var val; + if (computed) { + if (elem.offsetWidth !== 0) { + val = getWH(elem, name, extra); + } else { + jQuery.swap(elem, cssShow, function anonymous__357() { + val = getWH(elem, name, extra); + }); + } + if (val <= 0) { + val = curCSS(elem, name, name); + if (val === "0px" && currentStyle) { + val = currentStyle(elem, name, name); + } + if (val != null) { + return val === "" || val === "auto" ? "0px" : val; + } + } + if (val < 0 || val == null) { + val = elem.style[name]; + return val === "" || val === "auto" ? "0px" : val; + } + return typeof val === "string" ? val : val + "px"; + } + }, + set: function anonymous__358(elem, value) { + if (rnumpx.test(value)) { + value = parseFloat(value); + if (value >= 0) { + return value + "px"; + } + } else { + return value; + } + } + }; + }); + if (!jQuery.support.opacity) { + jQuery.cssHooks.opacity = { + get: function anonymous__359(elem, computed) { + return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "" : computed ? "1" : ""; + }, + set: function anonymous__360(elem, value) { + var style = elem.style, currentStyle = elem.currentStyle; + style.zoom = 1; + var opacity = jQuery.isNaN(value) ? "" : "alpha(opacity=" + value * 100 + ")", filter = currentStyle && currentStyle.filter || style.filter || ""; + style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : filter + " " + opacity; + } + }; + } + jQuery(function anonymous__361() { + if (!jQuery.support.reliableMarginRight) { + jQuery.cssHooks.marginRight = { + get: function anonymous__362(elem, computed) { + var ret; + jQuery.swap(elem, { + display: "inline-block" + }, function anonymous__363() { + if (computed) { + ret = curCSS(elem, "margin-right", "marginRight"); + } else { + ret = elem.style.marginRight; + } + }); + return ret; + } + }; + } + }); + if (document.defaultView && document.defaultView.getComputedStyle) { + getComputedStyle = function anonymous__364(elem, name) { + var ret, defaultView, computedStyle; + name = name.replace(rupper, "-$1").toLowerCase(); + if (!(defaultView = elem.ownerDocument.defaultView)) { + return undefined; + } + if (computedStyle = defaultView.getComputedStyle(elem, null)) { + ret = computedStyle.getPropertyValue(name); + if (ret === "" && !jQuery.contains(elem.ownerDocument.documentElement, elem)) { + ret = jQuery.style(elem, name); + } + } + return ret; + }; + } + if (document.documentElement.currentStyle) { + currentStyle = function anonymous__365(elem, name) { + var left, ret = elem.currentStyle && elem.currentStyle[name], rsLeft = elem.runtimeStyle && elem.runtimeStyle[name], style = elem.style; + if (!rnumpx.test(ret) && rnum.test(ret)) { + left = style.left; + if (rsLeft) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret || 0; + ret = style.pixelLeft + "px"; + style.left = left; + if (rsLeft) { + elem.runtimeStyle.left = rsLeft; + } + } + return ret === "" ? "auto" : ret; + }; + } + curCSS = getComputedStyle || currentStyle; + function getWH(elem, name, extra) { + var which = name === "width" ? cssWidth : cssHeight, val = name === "width" ? elem.offsetWidth : elem.offsetHeight; + if (extra === "border") { + return val; + } + jQuery.each(which, function anonymous__366() { + if (!extra) { + val -= parseFloat(jQuery.css(elem, "padding" + this)) || 0; + } + if (extra === "margin") { + val += parseFloat(jQuery.css(elem, "margin" + this)) || 0; + } else { + val -= parseFloat(jQuery.css(elem, "border" + this + "Width")) || 0; + } + }); + return val; + } + if (jQuery.expr && jQuery.expr.filters) { + jQuery.expr.filters.hidden = function anonymous__367(elem) { + var width = elem.offsetWidth, height = elem.offsetHeight; + return width === 0 && height === 0 || !jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css(elem, "display")) === "none"; + }; + jQuery.expr.filters.visible = function anonymous__368(elem) { + return !jQuery.expr.filters.hidden(elem); + }; + } + var r20 = /%20/g, rbracket = /\[\]$/, rCRLF = /\r?\n/g, rhash = /#.*$/, rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, rscript = /)<[^<]*)*<\/script>/gi, rselectTextarea = /^(?:select|textarea)/i, rspacesAjax = /\s+/, rts = /([?&])_=[^&]*/, rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, _load = jQuery.fn.load, prefilters = {}, transports = {}, ajaxLocation, ajaxLocParts; + try { + ajaxLocation = location.href; + } catch (e) { + ajaxLocation = document.createElement("a"); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; + } + ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []; + function addToPrefiltersOrTransports(structure) { + return function anonymous__369(dataTypeExpression, func) { + if (typeof dataTypeExpression !== "string") { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + if (jQuery.isFunction(func)) { + var dataTypes = dataTypeExpression.toLowerCase().split(rspacesAjax), i = 0, length = dataTypes.length, dataType, list, placeBefore; + for (; i < length; i++) { + dataType = dataTypes[i]; + placeBefore = /^\+/.test(dataType); + if (placeBefore) { + dataType = dataType.substr(1) || "*"; + } + list = structure[dataType] = structure[dataType] || []; + list[placeBefore ? "unshift" : "push"](func); + } + } + }; + } + function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, dataType, inspected) { + dataType = dataType || options.dataTypes[0]; + inspected = inspected || {}; + inspected[dataType] = true; + var list = structure[dataType], i = 0, length = list ? list.length : 0, executeOnly = structure === prefilters, selection; + for (; i < length && (executeOnly || !selection); i++) { + selection = list[i](options, originalOptions, jqXHR); + if (typeof selection === "string") { + if (!executeOnly || inspected[selection]) { + selection = undefined; + } else { + options.dataTypes.unshift(selection); + selection = inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, selection, inspected); + } + } + } + if ((executeOnly || !selection) && !inspected["*"]) { + selection = inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, "*", inspected); + } + return selection; + } + jQuery.fn.extend({ + load: function anonymous__370(url, params, callback) { + if (typeof url !== "string" && _load) { + return _load.apply(this, arguments); + } else if (!this.length) { + return this; + } + var off = url.indexOf(" "); + if (off >= 0) { + var selector = url.slice(off, url.length); + url = url.slice(0, off); + } + var type = "GET"; + if (params) { + if (jQuery.isFunction(params)) { + callback = params; + params = undefined; + } else if (typeof params === "object") { + params = jQuery.param(params, jQuery.ajaxSettings.traditional); + type = "POST"; + } + } + var self = this; + jQuery.ajax({ + url: url, + type: type, + dataType: "html", + data: params, + complete: function anonymous__371(jqXHR, status, responseText) { + responseText = jqXHR.responseText; + if (jqXHR.isResolved()) { + jqXHR.done(function anonymous__372(r) { + responseText = r; + }); + self.html(selector ? jQuery("
").append(responseText.replace(rscript, "")).find(selector) : responseText); + } + if (callback) { + self.each(callback, [ responseText, status, jqXHR ]); + } + } + }); + return this; + }, + serialize: function anonymous__373() { + return jQuery.param(this.serializeArray()); + }, + serializeArray: function anonymous__374() { + return this.map(function anonymous__375() { + return this.elements ? jQuery.makeArray(this.elements) : this; + }).filter(function anonymous__376() { + return this.name && !this.disabled && (this.checked || rselectTextarea.test(this.nodeName) || rinput.test(this.type)); + }).map(function anonymous__377(i, elem) { + var val = jQuery(this).val(); + return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function anonymous__378(val, i) { + return { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }) : { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }).get(); + } + }); + jQuery.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function anonymous__379(i, o) { + jQuery.fn[o] = function anonymous__380(f) { + return this.bind(o, f); + }; + }); + jQuery.each([ "get", "post" ], function anonymous__381(i, method) { + jQuery[method] = function anonymous__382(url, data, callback, type) { + if (jQuery.isFunction(data)) { + type = type || callback; + callback = data; + data = undefined; + } + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; + }); + jQuery.extend({ + getScript: function anonymous__383(url, callback) { + return jQuery.get(url, undefined, callback, "script"); + }, + getJSON: function anonymous__384(url, data, callback) { + return jQuery.get(url, data, callback, "json"); + }, + ajaxSetup: function anonymous__385(target, settings) { + if (!settings) { + settings = target; + target = jQuery.extend(true, jQuery.ajaxSettings, settings); + } else { + jQuery.extend(true, target, jQuery.ajaxSettings, settings); + } + for (var field in { + context: 1, + url: 1 + }) { + if (field in settings) { + (function _forin_body_12(field) { target[field] = settings[field]; })(field); + } else if (field in jQuery.ajaxSettings) { + (function _forin_body_13(field) { target[field] = jQuery.ajaxSettings[field]; })(field); + } + } + return target; + }, + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test(ajaxLocParts[1]), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded", + processData: true, + async: true, + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": "*/*" + }, + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + responseFields: { + xml: "responseXML", + text: "responseText" + }, + converters: { + "* text": window.String, + "text html": true, + "text json": jQuery.parseJSON, + "text xml": jQuery.parseXML + } + }, + ajaxPrefilter: addToPrefiltersOrTransports(prefilters), + ajaxTransport: addToPrefiltersOrTransports(transports), + ajax: function anonymous__386(url, options) { + if (typeof url === "object") { + options = url; + url = undefined; + } + options = options || {}; + var s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = callbackContext !== s && (callbackContext.nodeType || callbackContext instanceof jQuery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery._Deferred(), statusCode = s.statusCode || {}, ifModifiedKey, requestHeaders = {}, requestHeadersNames = {}, responseHeadersString, responseHeaders, transport, timeoutTimer, parts, state = 0, fireGlobals, i, jqXHR = { + readyState: 0, + setRequestHeader: function anonymous__387(name, value) { + if (!state) { + var lname = name.toLowerCase(); + name = requestHeadersNames[lname] = requestHeadersNames[lname] || name; + requestHeaders[name] = value; + } + return this; + }, + getAllResponseHeaders: function anonymous__388() { + return state === 2 ? responseHeadersString : null; + }, + getResponseHeader: function anonymous__389(key) { + var match; + if (state === 2) { + if (!responseHeaders) { + responseHeaders = {}; + while (match = rheaders.exec(responseHeadersString)) { + responseHeaders[match[1].toLowerCase()] = match[2]; + } + } + match = responseHeaders[key.toLowerCase()]; + } + return match === undefined ? null : match; + }, + overrideMimeType: function anonymous__390(type) { + if (!state) { + s.mimeType = type; + } + return this; + }, + abort: function anonymous__391(statusText) { + statusText = statusText || "abort"; + if (transport) { + transport.abort(statusText); + } + done(0, statusText); + return this; + } + }; + function done(status, statusText, responses, headers) { + if (state === 2) { + return; + } + state = 2; + if (timeoutTimer) { + clearTimeout(timeoutTimer); + } + transport = undefined; + responseHeadersString = headers || ""; + jqXHR.readyState = status ? 4 : 0; + var isSuccess, success, error, response = responses ? ajaxHandleResponses(s, jqXHR, responses) : undefined, lastModified, etag; + if (status >= 200 && status < 300 || status === 304) { + if (s.ifModified) { + if (lastModified = jqXHR.getResponseHeader("Last-Modified")) { + jQuery.lastModified[ifModifiedKey] = lastModified; + } + if (etag = jqXHR.getResponseHeader("Etag")) { + jQuery.etag[ifModifiedKey] = etag; + } + } + if (status === 304) { + statusText = "notmodified"; + isSuccess = true; + } else { + try { + success = ajaxConvert(s, response); + statusText = "success"; + isSuccess = true; + } catch (e) { + statusText = "parsererror"; + error = e; + } + } + } else { + error = statusText; + if (!statusText || status) { + statusText = "error"; + if (status < 0) { + status = 0; + } + } + } + jqXHR.status = status; + jqXHR.statusText = statusText; + if (isSuccess) { + deferred.resolveWith(callbackContext, [ success, statusText, jqXHR ]); + } else { + deferred.rejectWith(callbackContext, [ jqXHR, statusText, error ]); + } + jqXHR.statusCode(statusCode); + statusCode = undefined; + if (fireGlobals) { + globalEventContext.trigger("ajax" + (isSuccess ? "Success" : "Error"), [ jqXHR, s, isSuccess ? success : error ]); + } + completeDeferred.resolveWith(callbackContext, [ jqXHR, statusText ]); + if (fireGlobals) { + globalEventContext.trigger("ajaxComplete", [ jqXHR, s ]); + if (!--jQuery.active) { + jQuery.event.trigger("ajaxStop"); + } + } + } + deferred.promise(jqXHR); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.done; + jqXHR.statusCode = function anonymous__392(map) { + if (map) { + var tmp; + if (state < 2) { + for (tmp in map) { + statusCode[tmp] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[jqXHR.status]; + jqXHR.then(tmp, tmp); + } + } + return this; + }; + s.url = ((url || s.url) + "").replace(rhash, "").replace(rprotocol, ajaxLocParts[1] + "//"); + s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().split(rspacesAjax); + if (s.crossDomain == null) { + parts = rurl.exec(s.url.toLowerCase()); + s.crossDomain = !!(parts && (parts[1] != ajaxLocParts[1] || parts[2] != ajaxLocParts[2] || (parts[3] || (parts[1] === "http:" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === "http:" ? 80 : 443)))); + } + if (s.data && s.processData && typeof s.data !== "string") { + s.data = jQuery.param(s.data, s.traditional); + } + inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); + if (state === 2) { + return false; + } + fireGlobals = s.global; + s.type = s.type.toUpperCase(); + s.hasContent = !rnoContent.test(s.type); + if (fireGlobals && jQuery.active++ === 0) { + jQuery.event.trigger("ajaxStart"); + } + if (!s.hasContent) { + if (s.data) { + s.url += (rquery.test(s.url) ? "&" : "?") + s.data; + } + ifModifiedKey = s.url; + if (s.cache === false) { + var ts = jQuery.now(), ret = s.url.replace(rts, "$1_=" + ts); + s.url = ret + (ret === s.url ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : ""); + } + } + if (s.data && s.hasContent && s.contentType !== false || options.contentType) { + jqXHR.setRequestHeader("Content-Type", s.contentType); + } + if (s.ifModified) { + ifModifiedKey = ifModifiedKey || s.url; + if (jQuery.lastModified[ifModifiedKey]) { + jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[ifModifiedKey]); + } + if (jQuery.etag[ifModifiedKey]) { + jqXHR.setRequestHeader("If-None-Match", jQuery.etag[ifModifiedKey]); + } + } + jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", */*; q=0.01" : "") : s.accepts["*"]); + for (i in s.headers) { + jqXHR.setRequestHeader(i, s.headers[i]); + } + if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) { + jqXHR.abort(); + return false; + } + for (i in { + success: 1, + error: 1, + complete: 1 + }) { + jqXHR[i](s[i]); + } + transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); + if (!transport) { + done(-1, "No Transport"); + } else { + jqXHR.readyState = 1; + if (fireGlobals) { + globalEventContext.trigger("ajaxSend", [ jqXHR, s ]); + } + if (s.async && s.timeout > 0) { + timeoutTimer = setTimeout(function anonymous__393() { + jqXHR.abort("timeout"); + }, s.timeout); + } + try { + state = 1; + transport.send(requestHeaders, done); + } catch (e) { + if (status < 2) { + done(-1, e); + } else { + jQuery.error(e); + } + } + } + return jqXHR; + }, + param: function anonymous__394(a, traditional) { + var s = [], add = function anonymous__395(key, value) { + value = jQuery.isFunction(value) ? value() : value; + s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value); + }; + if (traditional === undefined) { + traditional = jQuery.ajaxSettings.traditional; + } + if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) { + jQuery.each(a, function anonymous__396() { + add(this.name, this.value); + }); + } else { + for (var prefix in a) { + buildParams(prefix, a[prefix], traditional, add); + } + } + return s.join("&").replace(r20, "+"); + } + }); + function buildParams(prefix, obj, traditional, add) { + if (jQuery.isArray(obj)) { + jQuery.each(obj, function anonymous__397(i, v) { + if (traditional || rbracket.test(prefix)) { + add(prefix, v); + } else { + buildParams(prefix + "[" + (typeof v === "object" || jQuery.isArray(v) ? i : "") + "]", v, traditional, add); + } + }); + } else if (!traditional && obj != null && typeof obj === "object") { + for (var name in obj) { + buildParams(prefix + "[" + name + "]", obj[name], traditional, add); + } + } else { + add(prefix, obj); + } + } + jQuery.extend({ + active: 0, + lastModified: {}, + etag: {} + }); + function ajaxHandleResponses(s, jqXHR, responses) { + var contents = s.contents, dataTypes = s.dataTypes, responseFields = s.responseFields, ct, type, finalDataType, firstDataType; + for (type in responseFields) { + if (type in responses) { + jqXHR[responseFields[type]] = responses[type]; + } + } + while (dataTypes[0] === "*") { + dataTypes.shift(); + if (ct === undefined) { + ct = s.mimeType || jqXHR.getResponseHeader("content-type"); + } + } + if (ct) { + for (type in contents) { + if (contents[type] && contents[type].test(ct)) { + dataTypes.unshift(type); + break; + } + } + } + if (dataTypes[0] in responses) { + finalDataType = dataTypes[0]; + } else { + for (type in responses) { + if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { + finalDataType = type; + break; + } + if (!firstDataType) { + firstDataType = type; + } + } + finalDataType = finalDataType || firstDataType; + } + if (finalDataType) { + if (finalDataType !== dataTypes[0]) { + dataTypes.unshift(finalDataType); + } + return responses[finalDataType]; + } + } + function ajaxConvert(s, response) { + if (s.dataFilter) { + response = s.dataFilter(response, s.dataType); + } + var dataTypes = s.dataTypes, converters = {}, i, key, length = dataTypes.length, tmp, current = dataTypes[0], prev, conversion, conv, conv1, conv2; + for (i = 1; i < length; i++) { + if (i === 1) { + for (key in s.converters) { + if (typeof key === "string") { + converters[key.toLowerCase()] = s.converters[key]; + } + } + } + prev = current; + current = dataTypes[i]; + if (current === "*") { + current = prev; + } else if (prev !== "*" && prev !== current) { + conversion = prev + " " + current; + conv = converters[conversion] || converters["* " + current]; + if (!conv) { + conv2 = undefined; + for (conv1 in converters) { + tmp = conv1.split(" "); + if (tmp[0] === prev || tmp[0] === "*") { + conv2 = converters[tmp[1] + " " + current]; + if (conv2) { + conv1 = converters[conv1]; + if (conv1 === true) { + conv = conv2; + } else if (conv2 === true) { + conv = conv1; + } + break; + } + } + } + } + if (!(conv || conv2)) { + jQuery.error("No conversion from " + conversion.replace(" ", " to ")); + } + if (conv !== true) { + response = conv ? conv(response) : conv2(conv1(response)); + } + } + } + return response; + } + var jsc = jQuery.now(), jsre = /(\=)\?(&|$)|\?\?/i; + jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function anonymous__398() { + return jQuery.expando + "_" + jsc++; + } + }); + jQuery.ajaxPrefilter("json jsonp", function anonymous__399(s, originalSettings, jqXHR) { + var inspectData = s.contentType === "application/x-www-form-urlencoded" && typeof s.data === "string"; + if (s.dataTypes[0] === "jsonp" || s.jsonp !== false && (jsre.test(s.url) || inspectData && jsre.test(s.data))) { + var responseContainer, jsonpCallback = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, previous = window[jsonpCallback], url = s.url, data = s.data, replace = "$1" + jsonpCallback + "$2"; + if (s.jsonp !== false) { + url = url.replace(jsre, replace); + if (s.url === url) { + if (inspectData) { + data = data.replace(jsre, replace); + } + if (s.data === data) { + url += (/\?/.test(url) ? "&" : "?") + s.jsonp + "=" + jsonpCallback; + } + } + } + s.url = url; + s.data = data; + window[jsonpCallback] = function anonymous__400(response) { + responseContainer = [ response ]; + }; + jqXHR.always(function anonymous__401() { + window[jsonpCallback] = previous; + if (responseContainer && jQuery.isFunction(previous)) { + window[jsonpCallback](responseContainer[0]); + } + }); + s.converters["script json"] = function anonymous__402() { + if (!responseContainer) { + jQuery.error(jsonpCallback + " was not called"); + } + return responseContainer[0]; + }; + s.dataTypes[0] = "json"; + return "script"; + } + }); + jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function anonymous__403(text) { + jQuery.globalEval(text); + return text; + } + } + }); + jQuery.ajaxPrefilter("script", function anonymous__404(s) { + if (s.cache === undefined) { + s.cache = false; + } + if (s.crossDomain) { + s.type = "GET"; + s.global = false; + } + }); + jQuery.ajaxTransport("script", function anonymous__405(s) { + if (s.crossDomain) { + var script, head = document.head || document.getElementsByTagName("head")[0] || document.documentElement; + return { + send: function anonymous__406(_, callback) { + script = document.createElement("script"); + script.async = "async"; + if (s.scriptCharset) { + script.charset = s.scriptCharset; + } + script.src = s.url; + script.onload = script.onreadystatechange = function anonymous__407(_, isAbort) { + if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) { + script.onload = script.onreadystatechange = null; + if (head && script.parentNode) { + head.removeChild(script); + } + script = undefined; + if (!isAbort) { + callback(200, "success"); + } + } + }; + head.insertBefore(script, head.firstChild); + }, + abort: function anonymous__408() { + if (script) { + script.onload(0, 1); + } + } + }; + } + }); + var xhrOnUnloadAbort = window.ActiveXObject ? function anonymous__409() { + for (var key in xhrCallbacks) { + xhrCallbacks[key](0, 1); + } + } : false, xhrId = 0, xhrCallbacks; + function createStandardXHR() { + try { + return new window.XMLHttpRequest; + } catch (e) {} + } + function createActiveXHR() { + try { + return new window.ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } + jQuery.ajaxSettings.xhr = window.ActiveXObject ? function anonymous__410() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : createStandardXHR; + (function anonymous__411(xhr) { + jQuery.extend(jQuery.support, { + ajax: !!xhr, + cors: !!xhr && "withCredentials" in xhr + }); + })(jQuery.ajaxSettings.xhr()); + if (jQuery.support.ajax) { + jQuery.ajaxTransport(function anonymous__412(s) { + if (!s.crossDomain || jQuery.support.cors) { + var callback; + return { + send: function anonymous__413(headers, complete) { + var xhr = s.xhr(), handle, i; + if (s.username) { + xhr.open(s.type, s.url, s.async, s.username, s.password); + } else { + xhr.open(s.type, s.url, s.async); + } + if (s.xhrFields) { + for (i in s.xhrFields) { + xhr[i] = s.xhrFields[i]; + } + } + if (s.mimeType && xhr.overrideMimeType) { + xhr.overrideMimeType(s.mimeType); + } + if (!s.crossDomain && !headers["X-Requested-With"]) { + headers["X-Requested-With"] = "XMLHttpRequest"; + } + try { + for (i in headers) { + xhr.setRequestHeader(i, headers[i]); + } + } catch (_) {} + xhr.send(s.hasContent && s.data || null); + callback = function anonymous__414(_, isAbort) { + var status, statusText, responseHeaders, responses, xml; + try { + if (callback && (isAbort || xhr.readyState === 4)) { + callback = undefined; + if (handle) { + xhr.onreadystatechange = jQuery.noop; + if (xhrOnUnloadAbort) { + delete xhrCallbacks[handle]; + } + } + if (isAbort) { + if (xhr.readyState !== 4) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; + xml = xhr.responseXML; + if (xml && xml.documentElement) { + responses.xml = xml; + } + responses.text = xhr.responseText; + try { + statusText = xhr.statusText; + } catch (e) { + statusText = ""; + } + if (!status && s.isLocal && !s.crossDomain) { + status = responses.text ? 200 : 404; + } else if (status === 1223) { + status = 204; + } + } + } + } catch (firefoxAccessException) { + if (!isAbort) { + complete(-1, firefoxAccessException); + } + } + if (responses) { + complete(status, statusText, responses, responseHeaders); + } + }; + if (!s.async || xhr.readyState === 4) { + callback(); + } else { + handle = ++xhrId; + if (xhrOnUnloadAbort) { + if (!xhrCallbacks) { + xhrCallbacks = {}; + jQuery(window).unload(xhrOnUnloadAbort); + } + xhrCallbacks[handle] = callback; + } + xhr.onreadystatechange = callback; + } + }, + abort: function anonymous__415() { + if (callback) { + callback(0, 1); + } + } + }; + } + }); + } + var elemdisplay = {}, iframe, iframeDoc, rfxtypes = /^(?:toggle|show|hide)$/, rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, timerId, fxAttrs = [ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ], [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], [ "opacity" ] ], fxNow, requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame; + jQuery.fn.extend({ + show: function anonymous__416(speed, easing, callback) { + var elem, display; + if (speed || speed === 0) { + return this.animate(genFx("show", 3), speed, easing, callback); + } else { + for (var i = 0, j = this.length; i < j; i++) { + elem = this[i]; + if (elem.style) { + display = elem.style.display; + if (!jQuery._data(elem, "olddisplay") && display === "none") { + display = elem.style.display = ""; + } + if (display === "" && jQuery.css(elem, "display") === "none") { + jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + } + } + } + for (i = 0; i < j; i++) { + elem = this[i]; + if (elem.style) { + display = elem.style.display; + if (display === "" || display === "none") { + elem.style.display = jQuery._data(elem, "olddisplay") || ""; + } + } + } + return this; + } + }, + hide: function anonymous__417(speed, easing, callback) { + if (speed || speed === 0) { + return this.animate(genFx("hide", 3), speed, easing, callback); + } else { + for (var i = 0, j = this.length; i < j; i++) { + if (this[i].style) { + var display = jQuery.css(this[i], "display"); + if (display !== "none" && !jQuery._data(this[i], "olddisplay")) { + jQuery._data(this[i], "olddisplay", display); + } + } + } + for (i = 0; i < j; i++) { + if (this[i].style) { + this[i].style.display = "none"; + } + } + return this; + } + }, + _toggle: jQuery.fn.toggle, + toggle: function anonymous__418(fn, fn2, callback) { + var bool = typeof fn === "boolean"; + if (jQuery.isFunction(fn) && jQuery.isFunction(fn2)) { + this._toggle.apply(this, arguments); + } else if (fn == null || bool) { + this.each(function anonymous__419() { + var state = bool ? fn : jQuery(this).is(":hidden"); + jQuery(this)[state ? "show" : "hide"](); + }); + } else { + this.animate(genFx("toggle", 3), fn, fn2, callback); + } + return this; + }, + fadeTo: function anonymous__420(speed, to, easing, callback) { + return this.filter(":hidden").css("opacity", 0).show().end().animate({ + opacity: to + }, speed, easing, callback); + }, + animate: function anonymous__421(prop, speed, easing, callback) { + var optall = jQuery.speed(speed, easing, callback); + if (jQuery.isEmptyObject(prop)) { + return this.each(optall.complete, [ false ]); + } + prop = jQuery.extend({}, prop); + return this[optall.queue === false ? "each" : "queue"](function anonymous__422() { + if (optall.queue === false) { + jQuery._mark(this); + } + var opt = jQuery.extend({}, optall), isElement = this.nodeType === 1, hidden = isElement && jQuery(this).is(":hidden"), name, val, p, display, e, parts, start, end, unit; + opt.animatedProperties = {}; + for (p in prop) { + name = jQuery.camelCase(p); + if (p !== name) { + prop[name] = prop[p]; + delete prop[p]; + } + val = prop[name]; + if (jQuery.isArray(val)) { + opt.animatedProperties[name] = val[1]; + val = prop[name] = val[0]; + } else { + opt.animatedProperties[name] = opt.specialEasing && opt.specialEasing[name] || opt.easing || "swing"; + } + if (val === "hide" && hidden || val === "show" && !hidden) { + return opt.complete.call(this); + } + if (isElement && (name === "height" || name === "width")) { + opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ]; + if (jQuery.css(this, "display") === "inline" && jQuery.css(this, "float") === "none") { + if (!jQuery.support.inlineBlockNeedsLayout) { + this.style.display = "inline-block"; + } else { + display = defaultDisplay(this.nodeName); + if (display === "inline") { + this.style.display = "inline-block"; + } else { + this.style.display = "inline"; + this.style.zoom = 1; + } + } + } + } + } + if (opt.overflow != null) { + this.style.overflow = "hidden"; + } + for (p in prop) { + e = new jQuery.fx(this, opt, p); + val = prop[p]; + if (rfxtypes.test(val)) { + e[val === "toggle" ? hidden ? "show" : "hide" : val](); + } else { + parts = rfxnum.exec(val); + start = e.cur(); + if (parts) { + end = parseFloat(parts[2]); + unit = parts[3] || (jQuery.cssNumber[p] ? "" : "px"); + if (unit !== "px") { + jQuery.style(this, p, (end || 1) + unit); + start = (end || 1) / e.cur() * start; + jQuery.style(this, p, start + unit); + } + if (parts[1]) { + end = (parts[1] === "-=" ? -1 : 1) * end + start; + } + e.custom(start, end, unit); + } else { + e.custom(start, val, ""); + } + } + } + return true; + }); + }, + stop: function anonymous__423(clearQueue, gotoEnd) { + if (clearQueue) { + this.queue([]); + } + this.each(function anonymous__424() { + var timers = jQuery.timers, i = timers.length; + if (!gotoEnd) { + jQuery._unmark(true, this); + } + while (i--) { + if (timers[i].elem === this) { + if (gotoEnd) { + timers[i](true); + } + timers.splice(i, 1); + } + } + }); + if (!gotoEnd) { + this.dequeue(); + } + return this; + } + }); + function createFxNow() { + setTimeout(clearFxNow, 0); + return fxNow = jQuery.now(); + } + function clearFxNow() { + fxNow = undefined; + } + function genFx(type, num) { + var obj = {}; + jQuery.each(fxAttrs.concat.apply([], fxAttrs.slice(0, num)), function anonymous__425() { + obj[this] = type; + }); + return obj; + } + jQuery.each({ + slideDown: genFx("show", 1), + slideUp: genFx("hide", 1), + slideToggle: genFx("toggle", 1), + fadeIn: { + opacity: "show" + }, + fadeOut: { + opacity: "hide" + }, + fadeToggle: { + opacity: "toggle" + } + }, function anonymous__426(name, props) { + jQuery.fn[name] = function anonymous__427(speed, easing, callback) { + return this.animate(props, speed, easing, callback); + }; + }); + jQuery.extend({ + speed: function anonymous__428(speed, easing, fn) { + var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { + complete: fn || !fn && easing || jQuery.isFunction(speed) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction(easing) && easing + }; + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default; + opt.old = opt.complete; + opt.complete = function anonymous__429(noUnmark) { + if (opt.queue !== false) { + jQuery.dequeue(this); + } else if (noUnmark !== false) { + jQuery._unmark(this); + } + if (jQuery.isFunction(opt.old)) { + opt.old.call(this); + } + }; + return opt; + }, + easing: { + linear: function anonymous__430(p, n, firstNum, diff) { + return firstNum + diff * p; + }, + swing: function anonymous__431(p, n, firstNum, diff) { + return (-Math.cos(p * Math.PI) / 2 + .5) * diff + firstNum; + } + }, + timers: [], + fx: function anonymous__432(elem, options, prop) { + this.options = options; + this.elem = elem; + this.prop = prop; + options.orig = options.orig || {}; + } + }); + jQuery.fx.prototype = { + update: function anonymous__433() { + if (this.options.step) { + this.options.step.call(this.elem, this.now, this); + } + (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this); + }, + cur: function anonymous__434() { + if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) { + return this.elem[this.prop]; + } + var parsed, r = jQuery.css(this.elem, this.prop); + return isNaN(parsed = parseFloat(r)) ? !r || r === "auto" ? 0 : r : parsed; + }, + custom: function anonymous__435(from, to, unit) { + var self = this, fx = jQuery.fx, raf; + this.startTime = fxNow || createFxNow(); + this.start = from; + this.end = to; + this.unit = unit || this.unit || (jQuery.cssNumber[this.prop] ? "" : "px"); + this.now = this.start; + this.pos = this.state = 0; + function t(gotoEnd) { + return self.step(gotoEnd); + } + t.elem = this.elem; + if (t() && jQuery.timers.push(t) && !timerId) { + if (requestAnimationFrame) { + timerId = 1; + raf = function anonymous__436() { + if (timerId) { + requestAnimationFrame(raf); + fx.tick(); + } + }; + requestAnimationFrame(raf); + } else { + timerId = setInterval(fx.tick, fx.interval); + } + } + }, + show: function anonymous__437() { + this.options.orig[this.prop] = jQuery.style(this.elem, this.prop); + this.options.show = true; + this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()); + jQuery(this.elem).show(); + }, + hide: function anonymous__438() { + this.options.orig[this.prop] = jQuery.style(this.elem, this.prop); + this.options.hide = true; + this.custom(this.cur(), 0); + }, + step: function anonymous__439(gotoEnd) { + var t = fxNow || createFxNow(), done = true, elem = this.elem, options = this.options, i, n; + if (gotoEnd || t >= options.duration + this.startTime) { + this.now = this.end; + this.pos = this.state = 1; + this.update(); + options.animatedProperties[this.prop] = true; + for (i in options.animatedProperties) { + if (options.animatedProperties[i] !== true) { + done = false; + } + } + if (done) { + if (options.overflow != null && !jQuery.support.shrinkWrapBlocks) { + jQuery.each([ "", "X", "Y" ], function anonymous__440(index, value) { + elem.style["overflow" + value] = options.overflow[index]; + }); + } + if (options.hide) { + jQuery(elem).hide(); + } + if (options.hide || options.show) { + for (var p in options.animatedProperties) { + jQuery.style(elem, p, options.orig[p]); + } + } + options.complete.call(elem); + } + return false; + } else { + if (options.duration == Infinity) { + this.now = t; + } else { + n = t - this.startTime; + this.state = n / options.duration; + this.pos = jQuery.easing[options.animatedProperties[this.prop]](this.state, n, 0, 1, options.duration); + this.now = this.start + (this.end - this.start) * this.pos; + } + this.update(); + } + return true; + } + }; + jQuery.extend(jQuery.fx, { + tick: function anonymous__441() { + for (var timers = jQuery.timers, i = 0; i < timers.length; ++i) { + if (!timers[i]()) { + timers.splice(i--, 1); + } + } + if (!timers.length) { + jQuery.fx.stop(); + } + }, + interval: 13, + stop: function anonymous__442() { + clearInterval(timerId); + timerId = null; + }, + speeds: { + slow: 600, + fast: 200, + _default: 400 + }, + step: { + opacity: function anonymous__443(fx) { + jQuery.style(fx.elem, "opacity", fx.now); + }, + _default: function anonymous__444(fx) { + if (fx.elem.style && fx.elem.style[fx.prop] != null) { + fx.elem.style[fx.prop] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit; + } else { + fx.elem[fx.prop] = fx.now; + } + } + } + }); + if (jQuery.expr && jQuery.expr.filters) { + jQuery.expr.filters.animated = function anonymous__445(elem) { + return jQuery.grep(jQuery.timers, function anonymous__446(fn) { + return elem === fn.elem; + }).length; + }; + } + function defaultDisplay(nodeName) { + if (!elemdisplay[nodeName]) { + var elem = jQuery("<" + nodeName + ">").appendTo("body"), display = elem.css("display"); + elem.remove(); + if (display === "none" || display === "") { + if (!iframe) { + iframe = document.createElement("iframe"); + iframe.frameBorder = iframe.width = iframe.height = 0; + } + document.body.appendChild(iframe); + if (!iframeDoc || !iframe.createElement) { + iframeDoc = (iframe.contentWindow || iframe.contentDocument).document; + iframeDoc.write(""); + } + elem = iframeDoc.createElement(nodeName); + iframeDoc.body.appendChild(elem); + display = jQuery.css(elem, "display"); + document.body.removeChild(iframe); + } + elemdisplay[nodeName] = display; + } + return elemdisplay[nodeName]; + } + var rtable = /^t(?:able|d|h)$/i, rroot = /^(?:body|html)$/i; + if ("getBoundingClientRect" in document.documentElement) { + jQuery.fn.offset = function anonymous__447(options) { + var elem = this[0], box; + if (options) { + return this.each(function anonymous__448(i) { + jQuery.offset.setOffset(this, options, i); + }); + } + if (!elem || !elem.ownerDocument) { + return null; + } + if (elem === elem.ownerDocument.body) { + return jQuery.offset.bodyOffset(elem); + } + try { + box = elem.getBoundingClientRect(); + } catch (e) {} + var doc = elem.ownerDocument, docElem = doc.documentElement; + if (!box || !jQuery.contains(docElem, elem)) { + return box ? { + top: box.top, + left: box.left + } : { + top: 0, + left: 0 + }; + } + var body = doc.body, win = getWindow(doc), clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, top = box.top + scrollTop - clientTop, left = box.left + scrollLeft - clientLeft; + return { + top: top, + left: left + }; + }; + } else { + jQuery.fn.offset = function anonymous__449(options) { + var elem = this[0]; + if (options) { + return this.each(function anonymous__450(i) { + jQuery.offset.setOffset(this, options, i); + }); + } + if (!elem || !elem.ownerDocument) { + return null; + } + if (elem === elem.ownerDocument.body) { + return jQuery.offset.bodyOffset(elem); + } + jQuery.offset.initialize(); + var computedStyle, offsetParent = elem.offsetParent, prevOffsetParent = elem, doc = elem.ownerDocument, docElem = doc.documentElement, body = doc.body, defaultView = doc.defaultView, prevComputedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle, top = elem.offsetTop, left = elem.offsetLeft; + while ((elem = elem.parentNode) && elem !== body && elem !== docElem) { + if (jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed") { + break; + } + computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle; + top -= elem.scrollTop; + left -= elem.scrollLeft; + if (elem === offsetParent) { + top += elem.offsetTop; + left += elem.offsetLeft; + if (jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName))) { + top += parseFloat(computedStyle.borderTopWidth) || 0; + left += parseFloat(computedStyle.borderLeftWidth) || 0; + } + prevOffsetParent = offsetParent; + offsetParent = elem.offsetParent; + } + if (jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible") { + top += parseFloat(computedStyle.borderTopWidth) || 0; + left += parseFloat(computedStyle.borderLeftWidth) || 0; + } + prevComputedStyle = computedStyle; + } + if (prevComputedStyle.position === "relative" || prevComputedStyle.position === "static") { + top += body.offsetTop; + left += body.offsetLeft; + } + if (jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed") { + top += Math.max(docElem.scrollTop, body.scrollTop); + left += Math.max(docElem.scrollLeft, body.scrollLeft); + } + return { + top: top, + left: left + }; + }; + } + jQuery.offset = { + initialize: function anonymous__451() { + var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat(jQuery.css(body, "marginTop")) || 0, html = "
"; + jQuery.extend(container.style, { + position: "absolute", + top: 0, + left: 0, + margin: 0, + border: 0, + width: "1px", + height: "1px", + visibility: "hidden" + }); + container.innerHTML = html; + body.insertBefore(container, body.firstChild); + innerDiv = container.firstChild; + checkDiv = innerDiv.firstChild; + td = innerDiv.nextSibling.firstChild.firstChild; + this.doesNotAddBorder = checkDiv.offsetTop !== 5; + this.doesAddBorderForTableAndCells = td.offsetTop === 5; + checkDiv.style.position = "fixed"; + checkDiv.style.top = "20px"; + this.supportsFixedPosition = checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15; + checkDiv.style.position = checkDiv.style.top = ""; + innerDiv.style.overflow = "hidden"; + innerDiv.style.position = "relative"; + this.subtractsBorderForOverflowNotVisible = checkDiv.offsetTop === -5; + this.doesNotIncludeMarginInBodyOffset = body.offsetTop !== bodyMarginTop; + body.removeChild(container); + jQuery.offset.initialize = jQuery.noop; + }, + bodyOffset: function anonymous__452(body) { + var top = body.offsetTop, left = body.offsetLeft; + jQuery.offset.initialize(); + if (jQuery.offset.doesNotIncludeMarginInBodyOffset) { + top += parseFloat(jQuery.css(body, "marginTop")) || 0; + left += parseFloat(jQuery.css(body, "marginLeft")) || 0; + } + return { + top: top, + left: left + }; + }, + setOffset: function anonymous__453(elem, options, i) { + var position = jQuery.css(elem, "position"); + if (position === "static") { + elem.style.position = "relative"; + } + var curElem = jQuery(elem), curOffset = curElem.offset(), curCSSTop = jQuery.css(elem, "top"), curCSSLeft = jQuery.css(elem, "left"), calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [ curCSSTop, curCSSLeft ]) > -1, props = {}, curPosition = {}, curTop, curLeft; + if (calculatePosition) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat(curCSSTop) || 0; + curLeft = parseFloat(curCSSLeft) || 0; + } + if (jQuery.isFunction(options)) { + options = options.call(elem, i, curOffset); + } + if (options.top != null) { + props.top = options.top - curOffset.top + curTop; + } + if (options.left != null) { + props.left = options.left - curOffset.left + curLeft; + } + if ("using" in options) { + options.using.call(elem, props); + } else { + curElem.css(props); + } + } + }; + jQuery.fn.extend({ + position: function anonymous__454() { + if (!this[0]) { + return null; + } + var elem = this[0], offsetParent = this.offsetParent(), offset = this.offset(), parentOffset = rroot.test(offsetParent[0].nodeName) ? { + top: 0, + left: 0 + } : offsetParent.offset(); + offset.top -= parseFloat(jQuery.css(elem, "marginTop")) || 0; + offset.left -= parseFloat(jQuery.css(elem, "marginLeft")) || 0; + parentOffset.top += parseFloat(jQuery.css(offsetParent[0], "borderTopWidth")) || 0; + parentOffset.left += parseFloat(jQuery.css(offsetParent[0], "borderLeftWidth")) || 0; + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + offsetParent: function anonymous__455() { + return this.map(function anonymous__456() { + var offsetParent = this.offsetParent || document.body; + while (offsetParent && !rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.offsetParent; + } + return offsetParent; + }); + } + }); + jQuery.each([ "Left", "Top" ], function anonymous__457(i, name) { + var method = "scroll" + name; + jQuery.fn[method] = function anonymous__458(val) { + var elem, win; + if (val === undefined) { + elem = this[0]; + if (!elem) { + return null; + } + win = getWindow(elem); + return win ? "pageXOffset" in win ? win[i ? "pageYOffset" : "pageXOffset"] : jQuery.support.boxModel && win.document.documentElement[method] || win.document.body[method] : elem[method]; + } + return this.each(function anonymous__459() { + win = getWindow(this); + if (win) { + win.scrollTo(!i ? val : jQuery(win).scrollLeft(), i ? val : jQuery(win).scrollTop()); + } else { + this[method] = val; + } + }); + }; + }); + function getWindow(elem) { + return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; + } + jQuery.each([ "Height", "Width" ], function anonymous__460(i, name) { + var type = name.toLowerCase(); + jQuery.fn["inner" + name] = function anonymous__461() { + return this[0] ? parseFloat(jQuery.css(this[0], type, "padding")) : null; + }; + jQuery.fn["outer" + name] = function anonymous__462(margin) { + return this[0] ? parseFloat(jQuery.css(this[0], type, margin ? "margin" : "border")) : null; + }; + jQuery.fn[type] = function anonymous__463(size) { + var elem = this[0]; + if (!elem) { + return size == null ? null : this; + } + if (jQuery.isFunction(size)) { + return this.each(function anonymous__464(i) { + var self = jQuery(this); + self[type](size.call(this, i, self[type]())); + }); + } + if (jQuery.isWindow(elem)) { + var docElemProp = elem.document.documentElement["client" + name]; + return elem.document.compatMode === "CSS1Compat" && docElemProp || elem.document.body["client" + name] || docElemProp; + } else if (elem.nodeType === 9) { + return Math.max(elem.documentElement["client" + name], elem.body["scroll" + name], elem.documentElement["scroll" + name], elem.body["offset" + name], elem.documentElement["offset" + name]); + } else if (size === undefined) { + var orig = jQuery.css(elem, type), ret = parseFloat(orig); + return jQuery.isNaN(ret) ? orig : ret; + } else { + return this.css(type, typeof size === "string" ? size : size + "px"); + } + }; + }); + window.jQuery = window.$ = jQuery; +})(window); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical-ctor.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical-ctor.js new file mode 100755 index 000000000..3364bae44 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical-ctor.js @@ -0,0 +1,58 @@ +x1 = "a"; +x2 = "a"; +x3 = "a"; +x4 = "a"; +x5 = "a"; +x6 = "a"; +x7 = "a"; +x8 = "a"; +x9 = "a"; +x10 = "a"; +x11 = "a"; +x12 = "a"; +x13 = "a"; +x14 = "a"; +x15 = "a"; +x16 = "a"; +x17 = "a"; +x18 = "a"; +x19 = "a"; +x20 = "a"; +x21 = "a"; +x22 = "a"; +x23 = "a"; +x24 = "a"; +x25 = "a"; +x26 = "a"; + +function foo() { + var y = x1 + + x2 + + x3 + + x4 + + x5 + + x6 + + x7 + + x8 + + x9 + + x10 + + x11 + + x12 + + x13 + + x14 + + x15 + + x16 + + x17 + + x18 + + x19 + + x20 + + x21 + + x22 + + x23 + + x24 + + x25; + alert(y); + x26 = y; +} + +new foo(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_broken.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_broken.js new file mode 100644 index 000000000..9d6c01a72 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_broken.js @@ -0,0 +1,12 @@ +var o = { h: function() {} }; + +function f(g) { + g(); + o.h(function() { + g; + }); +} + +function g() {} + +f(g); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_multiple_calls.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_multiple_calls.js new file mode 100644 index 000000000..3e413f17e --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/lexical_multiple_calls.js @@ -0,0 +1,23 @@ +var propName = "f"; +var reachable1 = function reachable1() { return 3; }; +var reachable2 = function reachable2() { return 4; }; +var m = function m(x,y) { + function n(a,b,p,r1,r2) { + var n_inner = function n_inner(p_inner) { + this[p_inner] = this.f1; + return this; + } + a.f1 = r1; + n_inner.call(a,p); + b.f1 = r2; + n_inner.call(b,p) + } + n(x,y,propName,reachable1,reachable2); +} + +var a = {}; +var b = {}; + +m(a,b); +var p = a[propName](); +var q = b[propName](); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/more-control-flow.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/more-control-flow.js new file mode 100755 index 000000000..4ff8edc40 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/more-control-flow.js @@ -0,0 +1,115 @@ + +function testSwitch( x ) { + var result = -1; + switch ( x ) { + case 3: + result = 7; + + case 4: + case 5: { + result = result+3; + break; + } + + case 6: + result = 2; + + default: + result += 4; + } + + return result; +} + +function testIfConvertedSwitch( x, y ) { + var result = -1; + switch ( x ) { + case y: + result = 7; + + case y+1: + case y+2: { + result = result+3; + break; + } + + case y-1: + result = 2; + + default: + result += 4; + } + + return result; +} + +function testDoWhile( x ) { + var result = 6; + do { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } while (--x > 4); + return result; +} + +function testWhile( x ) { + var result = 6; + while (--x > 4) { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } + return result; +} + +function testFor( x ) { + for(var result = 6; x > 4; x--) { + if (x > 100) + continue; + else if (x < 0) + break; + else + result += 1; + } + return result; +} + +function testReturn( x ) { + if (x < 17) + return 8; + x++; + return x; +} + +function testDeadLoop( x ) { + while (x < 17) { + return x++; + } + while (x < 17) { + if (x != 5) continue; + return x++; + } + return 0; +} + +testSwitch( 7 ); + +testIfConvertedSwitch( 7, 3 ); + +testDoWhile( 5 ); + +testWhile( 11 ); + +testFor( 16 ); + +testReturn( 2 ); + +testDeadLoop( 12 ); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/multivar.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/multivar.js new file mode 100755 index 000000000..ec9b9b0c9 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/multivar.js @@ -0,0 +1,20 @@ +function a() { + return 0; +} + +var b = function bf(x) { + return x + 1; +} + +function c(x) { + return x - 1; +} + +var ma = a, mb = b, mc = c; + +ma(); + +mb(7); + +mc(8); + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/nested.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/nested.js new file mode 100755 index 000000000..bb02c27e9 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/nested.js @@ -0,0 +1,11 @@ +function f(x) { + return function ff(y) { + return function fff(z) { + return x+y+z; + } + } +} + +var g1 = f(1); +var g2 = g1(2); +var g3 = g2(3); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/nested_assign_to_param.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/nested_assign_to_param.js new file mode 100644 index 000000000..8d56ed85d --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/nested_assign_to_param.js @@ -0,0 +1,10 @@ +function foo(x) { + function bar() { + x = function i_am_reachable() {} + } + bar(); + return x; +} + +var y = foo(null); +y(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/newfn.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/newfn.js new file mode 100755 index 000000000..244524d0f --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/newfn.js @@ -0,0 +1,12 @@ + +var fun1 = new Function("a", "b", "c", "return a+b+c"); + +var fun2 = new Function("a, b, c", "return a+b+c"); + +var fun3 = new Function("a, b", "c", "return a+b+c"); + +var x = fun1(5, 5, 6); + +var y = fun2(5, 7, 1); + +var z = fun3(3, 5, 2); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/objects.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/objects.js new file mode 100755 index 000000000..149e6f50c --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/objects.js @@ -0,0 +1,50 @@ + +function objects_are_fun(arg1, arg2) { + var local = new Object(); + var g = 7; + + local.f = arg1.foo; + local.f(); + + local.otherMethod = function nothing(arg1) { + return arg1 - 7; + }; + + local[g] = arg2[ "bar" ]; + local[g](); + +} + +var arg1; +var arg2 = new Object(); + +arg1 = { + foo: function whatever() { + return 3 + 7; + } +} + +arg2.bar = function other() { + return this.otherMethod( 3 ); +} + +arg2.otherMethod = function something(arg1) { + return arg1 + 5; +} + +arg2.bar( ); + +objects_are_fun( arg1, arg2 ); + +var numObj = new Number(4); +var strObj = new String("whatever"); + +var foo = strObj.toLowerCase(); + +var whatnot = [ , , , 7, numObj, arg2, strObj ]; + +whatnot[ 5 ].otherMethod( 7 ); + +delete arg2.bar(); +delete whatnot[ 5 ]; +delete arg2; diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/place_phi_npe.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/place_phi_npe.js new file mode 100644 index 000000000..400b9f6e8 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/place_phi_npe.js @@ -0,0 +1,9 @@ +function f() { + switch (0) { + default: + break; + } + oParsedResponse || 0; +} + +f(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/portal-example-simple.html b/com.ibm.wala.cast.js.test.data/examples-src/tests/portal-example-simple.html new file mode 100755 index 000000000..debd48777 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/portal-example-simple.html @@ -0,0 +1,389 @@ + + + + + + +Example Portal Page with two Portlets + + + + + + + + + + + + + + +
This will maliciously be removed by a portlet if you click on the text in the gray boxThat should be avoided
+
+ + + + +

Plan a dinner with friends


+

Enter the names of Restaurants in order of descending preference

+
+ + + + + + + + + + + + + + + + + + + + +
 Rank Name of Restaurant Location  
Insert Row
Move Up1.Move DownDelete Row +
Insert Row
+ +

+
+ + + + +
+
+
+ + +

This portlet contains information that is top secret. Thou shalt not read it

+ + + + + + + +
+
+ + + \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/prototype_contamination_bug.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/prototype_contamination_bug.js new file mode 100755 index 000000000..3115c8f03 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/prototype_contamination_bug.js @@ -0,0 +1,28 @@ +function A(){ + +} +A.prototype.foo = function foo_of_A(){ + console.log("foo_of_A"); +} + +function B(){ + +} +B.prototype.foo = function foo_of_B(){ + console.log("foo_of_B"); +} + +function test1(){ + var a = new A + console.log("calling foo_of_A"); + a.foo() +} + +function test2(){ + var b = new B + console.log("calling foo_of_B"); + b.foo() +} + +test1() +test2() \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/recursive_lexical.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/recursive_lexical.js new file mode 100644 index 000000000..91dbb4d72 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/recursive_lexical.js @@ -0,0 +1,10 @@ +var m = function f() { + var x = {}; + function g() { + x["foo"] = {}; + f(); + } + g(); +} + +m(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/repr.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/repr.js new file mode 100755 index 000000000..dc64a87d1 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/repr.js @@ -0,0 +1,42 @@ +var obj = { + repr:function(o){ + if(typeof (o)=="undefined"){ + return "undefined"; + }else{ + if(o===null){ + return "null"; + } + } + try{ + if(typeof (o.__repr__)=="function"){ + return o.__repr__(); + }else{ + if(typeof (o.repr)=="function"&&o.repr!=arguments.callee){ + return o.repr(); + } + } + return MochiKit.Base.reprRegistry.match(o); + } + catch(e){ + if(typeof (o.NAME)=="string"&&(o.toString==Function.prototype.toString||o.toString==Object.prototype.toString)){ + return o.NAME; + } + } + try{ + var _d8=(o+""); + } + catch(e){ + return "["+typeof (o)+"]"; + } + if(typeof (o)=="function"){ + o=_d8.replace(/^\s+/,""); + var idx=o.indexOf("{"); + if(idx!=-1){ + o=o.substr(0,idx)+"{...}"; + } + } + return _d8; + } +}; + +obj.repr(obj); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this.js new file mode 100755 index 000000000..3ed67f03f --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this.js @@ -0,0 +1,6 @@ +var o = { + f: function foo() { return this; }, + g: function bar() {} +} + +o.f().g(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this2.js new file mode 100755 index 000000000..f60928db7 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/return_this2.js @@ -0,0 +1,15 @@ +function A() {} +A.prototype.f = function foo() { + return this; +}; + +var a1 = new A(), a2 = new A(); + +a1.g = function bar1() {}; +a2.g = function bar2() {}; + +var x1 = a1.f(); +var x2 = a2.f(); + +(function test1() { x1.g(); })(); +(function test2() { x2.g(); })(); \ No newline at end of file diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/rewrite_does_not_change_lables_bug.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/rewrite_does_not_change_lables_bug.js new file mode 100755 index 000000000..5e7d7d346 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/rewrite_does_not_change_lables_bug.js @@ -0,0 +1,7 @@ +function f(){ + switch (a){ + case b: + return "wow" + } +} +f(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash1.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash1.js new file mode 100755 index 000000000..f4e0ac438 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash1.js @@ -0,0 +1,6 @@ + function Z(dom, selector){ + dom = dom || emptyArray; + dom.__proto__ = Z.prototype; + dom.selector = selector || ''; + return dom; + } diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash2.js new file mode 100755 index 000000000..7d9ae31ea --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash2.js @@ -0,0 +1,4 @@ + if (window.addEventListener) { + Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; + Object.extend(Event.prototype, methods); + } diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash3.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash3.js new file mode 100644 index 000000000..a4c158e15 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/rhino_crash3.js @@ -0,0 +1,10 @@ +function f() { + switch (0) { + default: + break; + } + oParsedResponse || 0; +} + +f(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/scoping_test.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/scoping_test.js new file mode 100644 index 000000000..ae4129796 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/scoping_test.js @@ -0,0 +1,13 @@ +function foo() { + function baz() { + return function f1() {}; + } + function boo() { + baz = function biz() { return function i_am_reachable() {}; } + } + boo(); + return baz(); +} + +var x = foo(); +x(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/simple-lexical.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/simple-lexical.js new file mode 100755 index 000000000..8eebe49af --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/simple-lexical.js @@ -0,0 +1,114 @@ + +function outer( x ) { + x++; + var z = x; + + function inner( y ) { + x += y; + z += 1 + x++ + }; + + var innerName = inner; + + function inner2( y ) { + if (y < 3) innerName = inner3; + innerName( y ); + } + + function inner3( y ) { + for(x = 0; x < 10; x++) { + y++; + } + } + + inner2( x ); + + inner( 7 ); + + inner3( 2 ); + + (function indirect( f, x ) { f(x); })( innerName, 6 ); + + function level1() { + + function level5() { + x++; + return x; + } + + function level4() { + return level5(); + } + + function level3() { + if (x == 3) { + level4(); + } + return x; + } + + function level2() { + if (x > 2) { + level3(); + return x; + } else { + return 7; + } + } + + x++; + if (x < 7) { + level2(); + } + return x; + } + + level1(); + + return x+z; +} + +function c2() { + +} + +function c3() { + +} + +function fa2(x) { + x(); +} + +function fa3(x) { + x(); +} + +function aa() { + var c1 = function _c1() { + + } + + var fa = function _fa1(x) { + x(); + } + + function bb(x) { + fa = x; + } + + fa(c1); + + bb(fa2); + + fa(c2); + + bb(fa3); + + fa(c3); +} + +var result = outer( 5 ); + +aa(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/simple.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/simple.js new file mode 100755 index 000000000..08999115b --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/simple.js @@ -0,0 +1,96 @@ + +function trivial(one, two) { + var local = two + 7; + if (local > 5) + return one; + else { + return function inc(i) { return i + 1; } ( two ); + } +} + +function silly(one, two) { + var local = two + 7; + var result; + if (local > Math.E) + result = --two; + else { + result = 5; + result = result<<1; + } + return result; +} + +var weird = function weirder ( one ) { + var result = Math.abs( one ); + var i; + for(i = 0; i < 7; i++) { + if ( ! ( (one + i) < 5 ) ) { + result = (6, result / i); + } + } + + return result; +} + +var strange = function stranger ( one ) { + var result = ~one; + result /= 7; + var i = 0; + do { + if ( (one * i) < -5 ) { + result = result % i; + } + } while (++i <= 7); + + return result; +} + +var fun = function fib(x) { + return (x < 2)? 1: (fib(x-1) + fib(x-2)); +} + +function bad(one, two) { + var local = one + 7; + var result; + switch (local) { + case 1: + case 2: + case 3: + case 4: + result = +5; + result = result>>>2; + break; + case 5: + case 6: + case 7: + result = two>>1; + break; + default: + result =-1; + } + return result; +} + +function rubbish(one, two) { + if (one(5)) + return one( 3 ); + else + return rubbish(two, one); +} + +if (1 < 2) q = 42; + +rubbish(strange, weird); + +var F; +if ( bad(2, 3) ) + F = fun; +else + F = strange; + +trivial(3, 2); + +if ( F(6) !== 0 ) + bad(4, 5); +else + weird( silly( "whatever", 7 ) ); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/simpler.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/simpler.js new file mode 100755 index 000000000..9773c7046 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/simpler.js @@ -0,0 +1,87 @@ + +function trivial(one, two) { + var local = two + 7; + if (local > 5) + return one; + else { + return two; + } +} + +function silly(one, two) { + var local = two + 7; + var result = 0; + if (local > Math.E) + result = --two; + else { + result = 5; + result = result<<1; + } + return result; +} + +function weirder ( one ) { + var result = Math.abs( one ); + for(var i = 0; i < 7; i++) { + if ( ! ( (one + i) < 5 ) ) { + result = (6, result / i); + } else { + result = 7; + } + } + return result; +} + +function stranger ( one ) { + var result = ~one; + result /= 7; + var i = 0; + do { + if ( (one * i) < -5 ) { + result = result % i; + } else { + result = 4; + } + } while (++i <= 7); + + return result; +} + +function fib(x) { + return (x < 2)? 1: (fib(x-1) + fib(x-2)); +} + +function bad(one, two) { + var local = one + 7; + var result = 0; + switch (local) { + case 1: + case 2: + case 3: + case 4: + result = +5; + result = result>>>2; + break; + case 5: + case 6: + case 7: + result = two>>1; + break; + default: + result =-1; + } + return result; +} + +function rubbish(one, two) { + if (one(5)) + return one( 3 ); + else + return rubbish(two, one); +} + +rubbish(stranger, weirder); + +trivial(3, 2); +bad(4, 5); +weirder( silly( "whatever", 7 ) ); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/stack_overflow_on_ssa_conversion.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/stack_overflow_on_ssa_conversion.js new file mode 100755 index 000000000..d0eaf502f --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/stack_overflow_on_ssa_conversion.js @@ -0,0 +1,1602 @@ +// I know it sounds weird, but JS in the wild contains cases in which there are about this amount of statements in the "main" scope (function). +// So, we cannot have recursions with depth linear in the lenght of the method. +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") +Console.log("1") +Console.log("2") +Console.log("3") +Console.log("4") +Console.log("5") +Console.log("6") +Console.log("7") +Console.log("8") +Console.log("9") +Console.log("0") diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/string-op.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/string-op.js new file mode 100755 index 000000000..329c22253 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/string-op.js @@ -0,0 +1,13 @@ + +function getOp(x, op) { + return x[ "operator" + op ]; +} + +function plusNum(y) { + return this.val + y; +} + +var obj = { val: 7, operatorPlus: plusNum }; + +var result = ( getOp(obj, "Plus") )( 6 ); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/string-prims.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/string-prims.js new file mode 100755 index 000000000..f53a2c347 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/string-prims.js @@ -0,0 +1,9 @@ + +var stuff = new String("this is a string of words"); + +var words = stuff.split(" "); + +var firstWord = words[0]; + +var firstWordUpper = firstWord.toUpperCase(); + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/try.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/try.js new file mode 100755 index 000000000..d434afc9c --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/try.js @@ -0,0 +1,76 @@ + +function targetOne( x ) { + return x; +} + +function targetTwo( x ) { + throw x; +} + +function tryCatch( x, targetOne, targetTwo ) { + try { + if (x.one < 7) + targetOne( x ); + else + targetTwo( x ); + } catch (e) { + e.two(); + } +} + +function tryFinally( x, targetOne, targetTwo ) { + try { + if (x.one < 7) + return targetOne( x ); + else + targetTwo( x ); + } finally { + x.two(); + } + x.three(); +} + +function tryFinallyLoop( x, targetTwo ) { + while (x.one < 7) { + try { + if (x.one < 3) + break; + else + targetTwo( x ); + } finally { + x.two(); + } + } +} + +function tryCatchFinally( x, targetOne, targetTwo ) { + try { + if (x.one < 7) + targetOne( x ); + else + targetTwo( x ); + } catch (e) { + e.two(); + } finally { + x.three(); + } +} + +o = { + one: -12, + + two: function two () { + return this; + }, + + three: function three () { + return 8; + } +}; + +tryCatch(o, targetOne, targetTwo); +tryFinally(o, targetOne, targetTwo); +tryFinallyLoop(o, targetTwo); +tryCatchFinally(o, targetOne, targetTwo); + + diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/upward.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/upward.js new file mode 100755 index 000000000..b3dc8d298 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/upward.js @@ -0,0 +1,17 @@ +function Obj(x) { + var state = x; + + this.set = function setit(x) { state = x; }; + + this.get = function getit() { return state; }; + +}; + + +var obj = new Obj( function tester1() { return 3; } ); + +var test1 = ( obj.get() )(); + +obj.set( function tester2() { return 7; } ); + +var test2 = ( obj.get() )(); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/with.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/with.js new file mode 100755 index 000000000..f1ee21079 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/with.js @@ -0,0 +1,8 @@ +function im_with_stupid(stupid, x) { + with (stupid) { + return x+3; + } +} + +var foo = new Object(); +var bar = im_with_stupid(foo, 7); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap1.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap1.js new file mode 100755 index 000000000..80d505b42 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap1.js @@ -0,0 +1,15 @@ +Function.prototype.wrap = function f_wrap(){ + var self = this; + return function wrapper(x, y, z){ + return self(x, y, z); + }; +}; + + +var extend = function f_extend(thi$, key, value){ + thi$[key] = value; +}.wrap(); + +extend(Number, 'g', function i_am_reachable(x){ return x+19; }); + +Number.g(23); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap2.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap2.js new file mode 100755 index 000000000..17f9699a7 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap2.js @@ -0,0 +1,15 @@ +Function.prototype.wrap = function f_wrap(){ + var self = this; + return function wrapper(x, y, z){ + return (function wrapper_inner() { self(x, y, z); })(); + }; +}; + + +var extend = function f_extend(thi$, key, value){ + thi$[key] = value; +}.wrap(); + +extend(Number, 'g', function i_am_reachable(x){ return x+19; }); + +Number.g(23); diff --git a/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap3.js b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap3.js new file mode 100644 index 000000000..688178db7 --- /dev/null +++ b/com.ibm.wala.cast.js.test.data/examples-src/tests/wrap3.js @@ -0,0 +1,24 @@ +function f_wrap() { + var y = null; + return function wrapper() { + return { set: function set(p) { + y = p; + }, get: function get() { + return y; + } + }; + } + +} + +var w = f_wrap(); + +var x = w(); + +var s = function i_am_reachable() {}; + +x.set(s); + +var t = x.get(); + +t(); diff --git a/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/JavaScriptTestPlugin.java b/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/JavaScriptTestPlugin.java deleted file mode 100755 index 048a506ce..000000000 --- a/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/JavaScriptTestPlugin.java +++ /dev/null @@ -1,85 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2002 - 2006 IBM Corporation. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *****************************************************************************/ -package com.ibm.wala.cast.js.test; - -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.core.runtime.Plugin; -import org.osgi.framework.BundleContext; - -/** - * The main plugin class to be used in the desktop. - */ -public class JavaScriptTestPlugin extends Plugin { - //The shared instance. - private static JavaScriptTestPlugin plugin; - //Resource bundle. - private ResourceBundle resourceBundle; - - /** - * The constructor. - */ - public JavaScriptTestPlugin() { - super(); - plugin = this; - } - - /** - * This method is called upon plug-in activation - */ - public void start(BundleContext context) throws Exception { - super.start(context); - } - - /** - * This method is called when the plug-in is stopped - */ - public void stop(BundleContext context) throws Exception { - super.stop(context); - plugin = null; - resourceBundle = null; - } - - /** - * Returns the shared instance. - */ - public static JavaScriptTestPlugin getDefault() { - return plugin; - } - - /** - * Returns the string from the plugin's resource bundle, - * or 'key' if not found. - */ - public static String getResourceString(String key) { - ResourceBundle bundle = JavaScriptTestPlugin.getDefault().getResourceBundle(); - try { - return (bundle != null) ? bundle.getString(key) : key; - } catch (MissingResourceException e) { - return key; - } - } - - /** - * Returns the plugin's resource bundle, - */ - public ResourceBundle getResourceBundle() { - try { - if (resourceBundle == null) - resourceBundle = ResourceBundle.getBundle("com.ibm.domo.js.test.JavaScriptTestPluginResources"); - } catch (MissingResourceException x) { - resourceBundle = null; - } - return resourceBundle; - } - -} diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java index eced12485..b0381ac4d 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/CAstAnalysisScope.java @@ -136,4 +136,7 @@ public class CAstAnalysisScope extends AnalysisScope { return 1; } + public String toString() { + return super.toString() + "\n" + theLoader + ": " + getModules(theLoader); + } } diff --git a/com.ibm.wala.ide.jdt/.classpath b/com.ibm.wala.ide.jdt/.classpath new file mode 100644 index 000000000..2ed464f27 --- /dev/null +++ b/com.ibm.wala.ide.jdt/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/com.ibm.wala.ide.jdt/.project b/com.ibm.wala.ide.jdt/.project new file mode 100644 index 000000000..b0fb255ad --- /dev/null +++ b/com.ibm.wala.ide.jdt/.project @@ -0,0 +1,28 @@ + + + com.ibm.wala.ide.jdt + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..c537b6306 --- /dev/null +++ b/com.ibm.wala.ide.jdt/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JavaScriptEclipseProjectPath.java b/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JavaScriptEclipseProjectPath.java index b4f8a5597..9009a5e14 100644 --- a/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JavaScriptEclipseProjectPath.java +++ b/com.ibm.wala.ide.jsdt/source/com/ibm/wala/ide/util/JavaScriptEclipseProjectPath.java @@ -23,12 +23,16 @@ public class JavaScriptEclipseProjectPath extends EclipseProjectPath + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/Activator.java b/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/Activator.java new file mode 100644 index 000000000..ba7c0803f --- /dev/null +++ b/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/Activator.java @@ -0,0 +1,89 @@ +/* + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html. + * + * This file is a derivative of code released by the University of + * California under the terms listed below. + * + * WALA JDT Frontend is Copyright (c) 2008 The Regents of the + * University of California (Regents). Provided that this notice and + * the following two paragraphs are included in any distribution of + * Refinement Analysis Tools or its derivative work, Regents agrees + * not to assert any of Regents' copyright rights in Refinement + * Analysis Tools against recipient for recipient's reproduction, + * preparation of derivative works, public display, public + * performance, distribution or sublicensing of Refinement Analysis + * Tools and derivative works, in source code and object code form. + * This agreement not to assert does not confer, by implication, + * estoppel, or otherwise any license or rights in any intellectual + * property of Regents, including, but not limited to, any patents + * of Regents or Regents' employees. + * + * IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, + * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + * INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE + * AND ITS DOCUMENTATION, EVEN IF REGENTS HAS BEEN ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE AND FURTHER DISCLAIMS ANY STATUTORY + * WARRANTY OF NON-INFRINGEMENT. THE SOFTWARE AND ACCOMPANYING + * DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS + * IS". REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ +package com.ibm.wala.ide.test; + +import org.eclipse.core.runtime.Plugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends Plugin { + + // The plug-in ID + public static final String PLUGIN_ID = "com.ibm.wala.ide.tests"; + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + +} diff --git a/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/JSProjectScopeTest.java b/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/JSProjectScopeTest.java index 21577b2a9..9edf2c703 100644 --- a/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/JSProjectScopeTest.java +++ b/com.ibm.wala.ide.tests/src/com/ibm/wala/ide/test/JSProjectScopeTest.java @@ -15,8 +15,8 @@ import org.junit.Test; import com.ibm.wala.cast.ipa.callgraph.CAstAnalysisScope; import com.ibm.wala.cast.js.ipa.callgraph.JSCallGraphUtil; import com.ibm.wala.cast.js.loader.JavaScriptLoader; -import com.ibm.wala.cast.js.test.JavaScriptTestPlugin; import com.ibm.wala.cast.js.translator.CAstRhinoTranslatorFactory; +import com.ibm.wala.cast.js.types.JavaScriptTypes; import com.ibm.wala.classLoader.ModuleEntry; import com.ibm.wala.ide.tests.util.EclipseTestUtil; import com.ibm.wala.ide.util.JavaScriptEclipseProjectPath; @@ -31,7 +31,7 @@ public class JSProjectScopeTest { @BeforeClass public static void beforeClass() { - EclipseTestUtil.importZippedProject(JavaScriptTestPlugin.getDefault(), jsTestDataProject, "test_project.zip", new NullProgressMonitor()); + EclipseTestUtil.importZippedProject(Activator.getDefault(), jsTestDataProject, "test_js_project.zip", new NullProgressMonitor()); System.err.println("finish importing project"); } @@ -54,6 +54,7 @@ public class JSProjectScopeTest { AnalysisScope s = JavaScriptEclipseProjectPath.make(p).toAnalysisScope(new CAstAnalysisScope(JSCallGraphUtil.makeLoaders(), Collections.singleton(JavaScriptLoader.JS))); System.err.println(s); Assert.assertTrue("cannot make scope", s != null); + Assert.assertFalse("cannot find files", s.getModules(JavaScriptTypes.jsLoader).isEmpty()); } @Test @@ -64,6 +65,7 @@ public class JSProjectScopeTest { System.err.println(info.calls.size()); System.err.println("call graph:\n" + info.cg); Assert.assertTrue("cannot find any function calls", info.calls.size()>0); + Assert.assertTrue("cannot find any cg nodes", info.cg.getNumberOfNodes()>0); } } diff --git a/com.ibm.wala.ide.tests/testdata/test_js_project.zip b/com.ibm.wala.ide.tests/testdata/test_js_project.zip new file mode 100644 index 0000000000000000000000000000000000000000..a1c2d6eb7349eff468b344c75912a51f93e22a61 GIT binary patch literal 91720 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%0DSa6izn}{Jcy^;I@`h{LN7)Tlc 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 literal 0 HcmV?d00001 diff --git a/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java b/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java index 017dc9b99..86ce69180 100644 --- a/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java +++ b/com.ibm.wala.ide/src/com/ibm/wala/ide/util/EclipseProjectPath.java @@ -72,8 +72,8 @@ public abstract class EclipseProjectPath { protected abstract void resolveProjectClasspathEntries(P project, boolean includeSource); - interface ILoader { - + public interface ILoader { + ClassLoaderReference ref(); }; /** @@ -88,6 +88,10 @@ public abstract class EclipseProjectPath { Loader(ClassLoaderReference ref) { this.ref = ref; } + + public ClassLoaderReference ref() { + return ref; + } }; public enum AnalysisScopeType { @@ -308,9 +312,9 @@ public abstract class EclipseProjectPath { public AnalysisScope toAnalysisScope(AnalysisScope scope) { - for (Loader loader : Loader.values()) { + for (ILoader loader : modules.keySet()) { for (Module m : modules.get(loader)) { - scope.addToScope(loader.ref, m); + scope.addToScope(loader.ref(), m); } } return scope;