
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

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

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

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


==============================================================================

Apache Weex Submodules:

Apache Weex includes a number of submodules with separate copyright notices
and license terms. Your use of these submodules is subject to the terms and
conditions of the following licenses.

This product bundles vuejs v1.0.12, which is available under a
"MIT" license. For details, see https://github.com/vuejs/vue/blob/v1.0.12/LICENSE and following files:
  src/js-framework/dist/index.js
  runtime/frameworks/legacy/core/array.js
  runtime/frameworks/legacy/core/dep.js
  runtime/frameworks/legacy/core/object.js
  runtime/frameworks/legacy/core/observer.js
  runtime/frameworks/legacy/core/state.js
  runtime/frameworks/legacy/core/watcher.js

  The MIT License (MIT)

  Copyright (c) 2013-2014 Yuxi Evan You

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to deal
  in the Software without restriction, including without limitation the rights
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  THE SOFTWARE.


This product bundles Guava v20.0, which is available under a "Apache" license. For details, see https://github.com/google/guava/blob/v20.0/COPYING and following files:
  android_sdk/src/main/java/org/apache/taobao/weex/utils/WXDataStructureUtil.java

This product bundles json11 v1.0.0, which is available under a "MIT" license.For details, see https://github.com/dropbox/json11/tree/v1.0.0 and following files:
   weex_core/Source/third_party/json11/CMakeLists.txt
   weex_core/Source/third_party/json11/json11.cc
   weex_core/Source/third_party/json11/json11.hpp

   /* Copyright (c) 2013 Dropbox, Inc.
   *
   * Permission is hereby granted, free of charge, to any person obtaining a copy
   * of this software and associated documentation files (the "Software"), to deal
   * in the Software without restriction, including without limitation the rights
   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   * copies of the Software, and to permit persons to whom the Software is
   * furnished to do so, subject to the following conditions:
   *
   * The above copyright notice and this permission notice shall be included in
   * all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   * THE SOFTWARE.
   */

This product bundles chromium v66.0.3344.2, which is available under a "BSD-style" license. For details, see https://github.com/chromium/chromium/blob/66.0.3344.2/third_party/modp_b64/LICENSE and following files:
  weex_core/Source/base/base64/base64.cpp
  weex_core/Source/base/base64/base64.h
  weex_core/Source/base/base64/modp_base64/modp_b64_data.h
  weex_core/Source/base/base64/modp_base64/modp_b64.cc
  weex_core/Source/base/base64/modp_base64/modp_b64.h
  weex_core/Source/base/android/jniprebuild/jni_generator.py

   # Copyright (c) 2012 The Chromium Authors. All rights reserved.
   # Use of this source code is governed by a BSD-style license that can be
   # found in the LICENSE file.

This product bundles Android Open Source Project vandroid-4.2.2_r1, which is available under a "BSD" license. For details, see https://android.googlesource.com/platform/bionic/+/android-4.2.2_r1/libc/README and following files:
  weex_core/Source/IPC/futex.h

This product bundles Webkit 2.17.4, which is available under a "BSD 2-clause License", "BSD 3-clause License" or "MIT license". For details, reference https://webkit.org/licensing-webkit/ for license and see https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.17.4 for following files:

   Bmalloc in WebKit:
      weex_core/Source/android/jsengine/dependence/bmalloc:
         CMakeLists.txt
         ChangeLog
         Makefile

      weex_core/Source/android/jsengine/dependence/bmalloc/Configurations:
         Base.xcconfig
         DebugRelease.xcconfig
         bmalloc.xcconfig
         mbmalloc.xcconfig

      weex_core/Source/android/jsengine/dependence/bmalloc/bmalloc:
         Algorithm.h
         Allocator.cpp
         Allocator.h
         AsyncTask.h
         AvailableMemory.cpp
         AvailableMemory.h
         BAssert.h
         BPlatform.h
         BumpAllocator.h
         BumpRange.h
         Cache.cpp
         Cache.h
         Chunk.h
         Deallocator.cpp
         Deallocator.h
         DebugHeap.cpp
         DebugHeap.h
         Environment.cpp
         Environment.h
         FixedVector.h
         Heap.cpp
         Heap.h
         Inline.h
         LargeMap.cpp
         LargeMap.h
         LargeRange.h
         LineMetadata.h
         List.h
         Logging.cpp
         Logging.h
         Map.h
         Mutex.h
         Object.h
         ObjectType.cpp
         ObjectType.h
         PerProcess.h
         PerThread.h
         Range.h
         ScopeExit.h
         Sizes.h
         SmallLine.h
         SmallPage.h
         StaticMutex.cpp
         StaticMutex.h
         Syscall.h
         VMAllocate.h
         VMHeap.cpp
         VMHeap.h
         Vector.h
         Zone.cpp
         Zone.h
         bmalloc.h
         mbmalloc.cpp

      weex_core/Source/android/jsengine/dependence/bmalloc/bmalloc/darwin:
         BSoftLinking.h

      weex_core/Source/android/jsengine/dependence/bmalloc/bmalloc.xcodeproj:
         project.pbxproj

   ICU in WebKit:
      weex_core/Source/android/jsengine/dependence/icu:
         LICENSE
         README

      weex_core/Source/android/jsengine/dependence/icu/unicode:
         localpointer.h
         parseerr.h
         platform.h
         ptypes.h
         putil.h
         ucal.h
         uchar.h
         ucnv.h
         ucnv_err.h
         ucol.h
         uconfig.h
         ucurr.h
         udat.h
         udatpg.h
         udisplaycontext.h
         uenum.h
         uformattable.h
         uiter.h
         uloc.h
         umachine.h
         umisc.h
         unorm.h
         unorm2.h
         unum.h
         unumsys.h
         urename.h
         uscript.h
         uset.h
         ustring.h
         utf.h
         utf16.h
         utf8.h
         utf_old.h
         utypes.h
         uvernum.h
         uversion.h
   
   WTF in WebKit:
      weex_core/Source/include/wtf:
         ASCIICType.h
         Assertions.h
         Atomics.h
         AutodrainedPool.h
         AutomaticThread.h
         BackwardsGraph.h
         Bag.h
         BagToHashMap.h
         BitVector.h
         Bitmap.h
         BlockObjCExceptions.h
         BlockPtr.h
         BlockStack.h
         BloomFilter.h
         Box.h
         Brigand.h
         BubbleSort.h
         BumpPointerAllocator.h
         ByteOrder.h
         CheckedArithmetic.h
         CheckedBoolean.h
         ClockType.h
         CommaPrinter.h
         CompilationThread.h
         Compiler.h
         Condition.h
         CrossThreadCopier.h
         CrossThreadQueue.h
         CrossThreadTask.h
         CryptographicUtilities.h
         CryptographicallyRandomNumber.h
         CurrentTime.h
         DataLog.h
         DateMath.h
         DecimalNumber.h
         DeferrableRefCounted.h
         DeprecatedOptional.h
         Deque.h
         DisallowCType.h
         Dominators.h
         DoublyLinkedList.h
         EnumTraits.h
         Expected.h
         ExportMacros.h
         FastBitVector.h
         FastMalloc.h
         FastTLS.h
         FeatureDefines.h
         FilePrintStream.h
         FlipBytes.h
         ForbidHeapAllocation.h
         Forward.h
         Function.h
         FunctionDispatcher.h
         GetPtr.h
         GlobalVersion.h
         GraphNodeWorklist.h
         GregorianDateTime.h
         HashCountedSet.h
         HashFunctions.h
         HashIterators.h
         HashMap.h
         HashMethod.h
         HashSet.h
         HashTable.h
         HashTraits.h
         Hasher.h
         HexNumber.h
         ICUCompatible.h
         Indenter.h
         IndexMap.h
         IndexSet.h
         IndexSparseSet.h
         IndexedContainerIterator.h
         InlineASM.h
         Insertion.h
         IteratorAdaptors.h
         IteratorRange.h
         LEBDecoder.h
         ListDump.h
         ListHashSet.h
         Lock.h
         LockAlgorithm.h
         LockedPrintStream.h
         Locker.h
         LoggingAccumulator.h
         LoggingHashID.h
         LoggingHashMap.h
         LoggingHashSet.h
         LoggingHashTraits.h
         MD5.h
         MainThread.h
         MallocPtr.h
         MathExtras.h
         MediaTime.h
         MemoryFootprint.h
         MemoryPressureHandler.h
         MessageQueue.h
         MetaAllocator.h
         MetaAllocatorHandle.h
         MonotonicTime.h
         NakedPtr.h
         NeverDestroyed.h
         NoLock.h
         Noncopyable.h
         NumberOfCores.h
         OSAllocator.h
         OSObjectPtr.h
         OSRandomSource.h
         ObjcRuntimeExtras.h
         OptionSet.h
         Optional.h
         OrderMaker.h
         PackedIntVector.h
         PageAllocation.h
         PageBlock.h
         PageReservation.h
         ParallelHelperPool.h
         ParallelJobs.h
         ParallelJobsGeneric.h
         ParallelJobsLibdispatch.h
         ParallelJobsOpenMP.h
         ParallelVectorIterator.h
         ParkingLot.h
         PassRefPtr.h
         Platform.h
         PlatformUserPreferredLanguages.h
         PointerComparison.h
         PrintStream.h
         ProcessID.h
         RAMSize.h
         RandomNumber.h
         RandomNumberSeed.h
         RangeSet.h
         RawPointer.h
         RecursiveLockAdapter.h
         RedBlackTree.h
         Ref.h
         RefCounted.h
         RefCountedArray.h
         RefCountedLeakCounter.h
         RefCounter.h
         RefPtr.h
         RetainPtr.h
         RunLoop.h
         RunLoopTimer.h
         SHA1.h
         SaturatedArithmetic.h
         SchedulePair.h
         Scope.h
         ScopedLambda.h
         Seconds.h
         SegmentedVector.h
         SentinelLinkedList.h
         SetForScope.h
         SharedTask.h
         SimpleStats.h
         SinglyLinkedList.h
         SixCharacterHash.h
         SmallPtrSet.h
         Spectrum.h
         StackBounds.h
         StackStats.h
         StaticConstructors.h
         StdLibExtras.h
         Stopwatch.h
         StreamBuffer.h
         StringBuilder.h
         StringExtras.h
         StringHashDumpContext.h
         StringPrintStream.h
         SynchronizedFixedQueue.h
         SystemTracing.h
         ThreadFunctionInvocation.h
         ThreadIdentifierDataPthreads.h
         ThreadSafeRefCounted.h
         ThreadSpecific.h
         Threading.h
         ThreadingPrimitives.h
         TimeWithDynamicClockType.h
         TinyLRUCache.h
         TinyPtrSet.h
         Trace.h
         TriState.h
         TypeCasts.h
         UniStdExtras.h
         UnionFind.h
         UniqueRef.h
         VMTags.h
         ValueCheck.h
         Variant.h
         Vector.h
         VectorTraits.h
         WTFThreadData.h
         WallTime.h
         WeakPtr.h
         WeakRandom.h
         WindowsExtras.h
         WordLock.h
         WorkQueue.h
         config.h
         dtoa.h

      weex_core/Source/include/wtf/icu:
         ICUCompatible.h
         unicode

      weex_core/Source/include/wtf/icu/unicode:
         bytestream.h
         localpointer.h
         parseerr.h
         platform.h
         ptypes.h
         putil.h
         rep.h
         std_string.h
         strenum.h
         stringpiece.h
         ubrk.h
         uchar.h
         ucnv.h
         ucnv_err.h
         ucol.h
         uconfig.h
         ucurr.h
         uenum.h
         uiter.h
         uloc.h
         umachine.h
         unistr.h
         unorm.h
         unorm2.h
         uobject.h
         urename.h
         uscript.h
         uset.h
         ustring.h
         utext.h
         utf.h
         utf16.h
         utf8.h
         utf_old.h
         utypes.h
         uvernum.h
         uversion.h

      weex_core/Source/include/wtf/text:
         ASCIIFastPath.h
         AtomicString.h
         AtomicStringHash.h
         AtomicStringImpl.h
         AtomicStringTable.h
         Base64.h
         CString.h
         ConversionMode.h
         IntegerToStringConversion.h
         LChar.h
         LineBreakIteratorPoolICU.h
         NullTextBreakIterator.h
         OrdinalNumber.h
         StringBuffer.h
         StringBuilder.h
         StringCommon.h
         StringConcatenate.h
         StringConcatenateNumbers.h
         StringHash.h
         StringImpl.h
         StringOperators.h
         StringView.h
         SymbolImpl.h
         SymbolRegistry.h
         TextBreakIterator.h
         TextBreakIteratorInternalICU.h
         TextPosition.h
         UniquedStringImpl.h
         WTFString.h

      weex_core/Source/include/wtf/unicode:
         WTFUTF8.h

   JavaScriptCore in WebKit:
      weex_core/Source/include/JavaScriptCore/API:
         APICallbackFunction.h
         APICast.h
         APIUtils.h
         JSAPIWrapperObject.h
         JSBase.h
         JSBasePrivate.h
         JSCTestRunnerUtils.h
         JSCallbackConstructor.h
         JSCallbackFunction.h
         JSCallbackObject.h
         JSCallbackObjectFunctions.h
         JSClassRef.h
         JSContext.h
         JSContextInternal.h
         JSContextPrivate.h
         JSContextRef.h
         JSContextRefInspectorSupport.h
         JSContextRefInternal.h
         JSContextRefPrivate.h
         JSExport.h
         JSManagedValue.h
         JSManagedValueInternal.h
         JSObjectRef.h
         JSObjectRefPrivate.h
         JSRemoteInspector.h
         JSRetainPtr.h
         JSScriptRefPrivate.h
         JSStringRef.h
         JSStringRefBSTR.h
         JSStringRefCF.h
         JSStringRefPrivate.h
         JSTypedArray.h
         JSValue.h
         JSValueInternal.h
         JSValueRef.h
         JSVirtualMachine.h
         JSVirtualMachineInternal.h
         JSWeakObjectMapRefInternal.h
         JSWeakObjectMapRefPrivate.h
         JSWrapperMap.h
         JavaScript.h
         JavaScriptCore.h
         ObjCCallbackFunction.h
         ObjcRuntimeExtras.h
         OpaqueJSString.h
         WebKitAvailability.h

      weex_core/Source/include/JavaScriptCore/ForwardingHeaders/JavaScriptCore:
         APICast.h
         JSBase.h
         JSCTestRunnerUtils.h
         JSContextRef.h
         JSObjectRef.h
         JSObjectRefPrivate.h
         JSRetainPtr.h
         JSStringRef.h
         JSStringRefCF.h
         JSTypedArray.h
         JSValueRef.h
         JavaScript.h
         JavaScriptCore.h
         OpaqueJSString.h
         WebKitAvailability.h

      weex_core/Source/include/JavaScriptCore/assembler:
         ARM64Assembler.h
         ARMAssembler.h
         ARMv7Assembler.h
         AbortReason.h
         AbstractMacroAssembler.h
         AllowMacroScratchRegisterUsage.h
         AssemblerBuffer.h
         AssemblerBufferWithConstantPool.h
         AssemblerCommon.h
         CPU.h
         CodeLocation.h
         DisallowMacroScratchRegisterUsage.h
         LinkBuffer.h
         MIPSAssembler.h
         MacroAssembler.h
         MacroAssemblerARM.h
         MacroAssemblerARM64.h
         MacroAssemblerARMv7.h
         MacroAssemblerCodeRef.h
         MacroAssemblerHelpers.h
         MacroAssemblerMIPS.h
         MacroAssemblerPrinter.h
         MacroAssemblerSH4.h
         MacroAssemblerX86.h
         MacroAssemblerX86Common.h
         MacroAssemblerX86_64.h
         MaxFrameExtentForSlowPathCall.h
         SH4Assembler.h
         X86Assembler.h

      weex_core/Source/include/JavaScriptCore/bytecode:
         AccessCase.h
         AdaptiveInferredPropertyValueWatchpointBase.h
         ArithProfile.h
         ArrayAllocationProfile.h
         ArrayProfile.h
         ByValInfo.h
         BytecodeBasicBlock.h
         BytecodeConventions.h
         BytecodeDumper.h
         BytecodeGeneratorification.h
         BytecodeGraph.h
         BytecodeIntrinsicRegistry.h
         BytecodeKills.h
         BytecodeLivenessAnalysis.h
         BytecodeLivenessAnalysisInlines.h
         BytecodeRewriter.h
         BytecodeUseDef.h
         CallEdge.h
         CallLinkInfo.h
         CallLinkStatus.h
         CallMode.h
         CallReturnOffsetToBytecodeOffset.h
         CallVariant.h
         CodeBlock.h
         CodeBlockHash.h
         CodeBlockJettisoningWatchpoint.h
         CodeBlockWithJITType.h
         CodeOrigin.h
         CodeType.h
         ComplexGetStatus.h
         DFGExitProfile.h
         DOMJITAccessCasePatchpointParams.h
         DataFormat.h
         DeferredCompilationCallback.h
         DeferredSourceDump.h
         DirectEvalCodeCache.h
         EvalCodeBlock.h
         EvalCodeCache.h
         ExecutableInfo.h
         ExecutionCounter.h
         ExitKind.h
         ExitingJITType.h
         ExpressionRangeInfo.h
         FullBytecodeLiveness.h
         FullCodeOrigin.h
         FunctionCodeBlock.h
         GetByIdStatus.h
         GetByIdVariant.h
         GetterSetterAccessCase.h
         GlobalCodeBlock.h
         HandlerInfo.h
         InlineAccess.h
         InlineCallFrame.h
         InlineCallFrameSet.h
         Instruction.h
         InternalFunctionAllocationProfile.h
         IntrinsicGetterAccessCase.h
         JumpTable.h
         LLIntCallLinkInfo.h
         LLIntPrototypeLoadAdaptiveStructureWatchpoint.h
         LazyOperandValueProfile.h
         MethodOfGettingAValueProfile.h
         ModuleNamespaceAccessCase.h
         ModuleProgramCodeBlock.h
         ObjectAllocationProfile.h
         ObjectPropertyCondition.h
         ObjectPropertyConditionSet.h
         Opcode.h
         Operands.h
         OperandsInlines.h
         PolymorphicAccess.h
         PreciseJumpTargets.h
         PreciseJumpTargetsInlines.h
         ProgramCodeBlock.h
         PropertyCondition.h
         ProxyableAccessCase.h
         PutByIdFlags.h
         PutByIdStatus.h
         PutByIdVariant.h
         PutKind.h
         ReduceWhitespace.h
         SpecialPointer.h
         SpeculatedType.h
         StructureSet.h
         StructureStubClearingWatchpoint.h
         StructureStubInfo.h
         SuperSampler.h
         ToThisStatus.h
         TrackedReferences.h
         TypeLocation.h
         UnlinkedCodeBlock.h
         UnlinkedEvalCodeBlock.h
         UnlinkedFunctionCodeBlock.h
         UnlinkedFunctionExecutable.h
         UnlinkedGlobalCodeBlock.h
         UnlinkedInstructionStream.h
         UnlinkedModuleProgramCodeBlock.h
         UnlinkedProgramCodeBlock.h
         ValueProfile.h
         ValueRecovery.h
         VariableWriteFireDetail.h
         VirtualRegister.h
         Watchpoint.h
         WebAssemblyCodeBlock.h

      weex_core/Source/include/JavaScriptCore/dfg:
         DFGAbstractHeap.h
         DFGAbstractInterpreter.h
         DFGAbstractInterpreterInlines.h
         DFGAbstractValue.h
         DFGAdaptiveInferredPropertyValueWatchpoint.h
         DFGAdaptiveStructureWatchpoint.h
         DFGAdjacencyList.h
         DFGAllocator.h
         DFGArgumentPosition.h
         DFGArgumentsEliminationPhase.h
         DFGArgumentsUtilities.h
         DFGArithMode.h
         DFGArrayMode.h
         DFGArrayifySlowPathGenerator.h
         DFGAtTailAbstractState.h
         DFGAvailability.h
         DFGAvailabilityMap.h
         DFGBackwardsCFG.h
         DFGBackwardsDominators.h
         DFGBackwardsPropagationPhase.h
         DFGBasicBlock.h
         DFGBasicBlockInlines.h
         DFGBlockInsertionSet.h
         DFGBlockMap.h
         DFGBlockMapInlines.h
         DFGBlockSet.h
         DFGBlockSetInlines.h
         DFGBlockWorklist.h
         DFGBranchDirection.h
         DFGByteCodeParser.h
         DFGCFAPhase.h
         DFGCFG.h
         DFGCFGSimplificationPhase.h
         DFGCPSRethreadingPhase.h
         DFGCSEPhase.h
         DFGCallArrayAllocatorSlowPathGenerator.h
         DFGCallCreateDirectArgumentsSlowPathGenerator.h
         DFGCapabilities.h
         DFGCleanUpPhase.h
         DFGClobberSet.h
         DFGClobberize.h
         DFGClobbersExitState.h
         DFGCombinedLiveness.h
         DFGCommon.h
         DFGCommonData.h
         DFGCompilationKey.h
         DFGCompilationMode.h
         DFGConstantFoldingPhase.h
         DFGConstantHoistingPhase.h
         DFGControlEquivalenceAnalysis.h
         DFGCriticalEdgeBreakingPhase.h
         DFGDCEPhase.h
         DFGDOMJITPatchpointParams.h
         DFGDesiredIdentifiers.h
         DFGDesiredInferredType.h
         DFGDesiredTransitions.h
         DFGDesiredWatchpoints.h
         DFGDesiredWeakReferences.h
         DFGDisassembler.h
         DFGDoesGC.h
         DFGDominators.h
         DFGDoubleFormatState.h
         DFGDriver.h
         DFGEdge.h
         DFGEdgeDominates.h
         DFGEdgeUsesStructure.h
         DFGEpoch.h
         DFGFailedFinalizer.h
         DFGFiltrationResult.h
         DFGFinalizer.h
         DFGFixupPhase.h
         DFGFlowIndexing.h
         DFGFlowMap.h
         DFGFlushFormat.h
         DFGFlushedAt.h
         DFGForAllKills.h
         DFGFrozenValue.h
         DFGGenerationInfo.h
         DFGGraph.h
         DFGGraphSafepoint.h
         DFGHeapLocation.h
         DFGInPlaceAbstractState.h
         DFGInferredTypeCheck.h
         DFGInlineCacheWrapper.h
         DFGInlineCacheWrapperInlines.h
         DFGInsertionSet.h
         DFGIntegerCheckCombiningPhase.h
         DFGIntegerRangeOptimizationPhase.h
         DFGInvalidationPointInjectionPhase.h
         DFGJITCode.h
         DFGJITCompiler.h
         DFGJITFinalizer.h
         DFGJumpReplacement.h
         DFGLICMPhase.h
         DFGLazyJSValue.h
         DFGLazyNode.h
         DFGLiveCatchVariablePreservationPhase.h
         DFGLivenessAnalysisPhase.h
         DFGLongLivedState.h
         DFGLoopPreHeaderCreationPhase.h
         DFGMaximalFlushInsertionPhase.h
         DFGMayExit.h
         DFGMinifiedGraph.h
         DFGMinifiedID.h
         DFGMinifiedNode.h
         DFGMovHintRemovalPhase.h
         DFGMultiGetByOffsetData.h
         DFGNaturalLoops.h
         DFGNode.h
         DFGNodeAbstractValuePair.h
         DFGNodeAllocator.h
         DFGNodeFlags.h
         DFGNodeFlowProjection.h
         DFGNodeOrigin.h
         DFGNodeType.h
         DFGNullAbstractState.h
         DFGOSRAvailabilityAnalysisPhase.h
         DFGOSREntry.h
         DFGOSREntrypointCreationPhase.h
         DFGOSRExit.h
         DFGOSRExitBase.h
         DFGOSRExitCompilationInfo.h
         DFGOSRExitCompiler.h
         DFGOSRExitCompilerCommon.h
         DFGOSRExitFuzz.h
         DFGOSRExitJumpPlaceholder.h
         DFGOSRExitPreparation.h
         DFGObjectAllocationSinkingPhase.h
         DFGObjectMaterializationData.h
         DFGOpInfo.h
         DFGOperations.h
         DFGPhantomInsertionPhase.h
         DFGPhase.h
         DFGPhiChildren.h
         DFGPlan.h
         DFGPlanInlines.h
         DFGPrePostNumbering.h
         DFGPreciseLocalClobberize.h
         DFGPredictionInjectionPhase.h
         DFGPredictionPropagationPhase.h
         DFGPromotedHeapLocation.h
         DFGPropertyTypeKey.h
         DFGPureValue.h
         DFGPutStackSinkingPhase.h
         DFGRegisterBank.h
         DFGRegisteredStructure.h
         DFGRegisteredStructureSet.h
         DFGSSACalculator.h
         DFGSSAConversionPhase.h
         DFGSSALoweringPhase.h
         DFGSafeToExecute.h
         DFGSafepoint.h
         DFGSaneStringGetByValSlowPathGenerator.h
         DFGScannable.h
         DFGScoreBoard.h
         DFGSilentRegisterSavePlan.h
         DFGSlowPathGenerator.h
         DFGSpeculativeJIT.h
         DFGStackLayoutPhase.h
         DFGStaticExecutionCountEstimationPhase.h
         DFGStoreBarrierClusteringPhase.h
         DFGStoreBarrierInsertionPhase.h
         DFGStrengthReductionPhase.h
         DFGStructureAbstractValue.h
         DFGStructureClobberState.h
         DFGStructureRegistrationPhase.h
         DFGThreadData.h
         DFGThunks.h
         DFGTierUpCheckInjectionPhase.h
         DFGToFTLDeferredCompilationCallback.h
         DFGToFTLForOSREntryDeferredCompilationCallback.h
         DFGTransition.h
         DFGTypeCheckHoistingPhase.h
         DFGUnificationPhase.h
         DFGUseKind.h
         DFGValidate.h
         DFGValueSource.h
         DFGValueStrength.h
         DFGVarargsForwardingPhase.h
         DFGVariableAccessData.h
         DFGVariableAccessDataDump.h
         DFGVariableEvent.h
         DFGVariableEventStream.h
         DFGVirtualRegisterAllocationPhase.h
         DFGWatchpointCollectionPhase.h
         DFGWorklist.h
         DFGWorklistInlines.h

      weex_core/Source/include/JavaScriptCore/disassembler:
         Disassembler.h
         UDis86Disassembler.h

      weex_core/Source/include/JavaScriptCore/domjit:
         DOMJITAbstractHeap.h
         DOMJITCallDOMGetterPatchpoint.h
         DOMJITEffect.h
         DOMJITGetterSetter.h
         DOMJITHeapRange.h
         DOMJITPatchpoint.h
         DOMJITPatchpointParams.h
         DOMJITReg.h
         DOMJITSignature.h
         DOMJITSlowPathCalls.h
         DOMJITValue.h

      weex_core/Source/include/JavaScriptCore/heap:
         AllocatingScope.h
         AllocatorAttributes.h
         CellContainer.h
         CellContainerInlines.h
         CellState.h
         CodeBlockSet.h
         CodeBlockSetInlines.h
         CollectingScope.h
         CollectionScope.h
         CollectorPhase.h
         ConservativeRoots.h
         ConstraintVolatility.h
         DeferGC.h
         DeleteAllCodeEffort.h
         DestructionMode.h
         EdenGCActivityCallback.h
         FreeList.h
         FullGCActivityCallback.h
         GCActivityCallback.h
         GCAssertions.h
         GCConductor.h
         GCDeferralContext.h
         GCDeferralContextInlines.h
         GCIncomingRefCounted.h
         GCIncomingRefCountedInlines.h
         GCIncomingRefCountedSet.h
         GCIncomingRefCountedSetInlines.h
         GCLogging.h
         GCSegmentedArray.h
         GCSegmentedArrayInlines.h
         GCTypeMap.h
         Handle.h
         HandleBlock.h
         HandleBlockInlines.h
         HandleSet.h
         HandleStack.h
         HandleTypes.h
         Heap.h
         HeapCell.h
         HeapCellInlines.h
         HeapHelperPool.h
         HeapInlines.h
         HeapIterationScope.h
         HeapObserver.h
         HeapProfiler.h
         HeapRootVisitor.h
         HeapSnapshot.h
         HeapSnapshotBuilder.h
         HeapStatistics.h
         HeapTimer.h
         HeapUtil.h
         HelpingGCScope.h
         IncrementalSweeper.h
         JITStubRoutineSet.h
         LargeAllocation.h
         ListableHandler.h
         LiveObjectData.h
         LiveObjectList.h
         Local.h
         LocalScope.h
         LockDuringMarking.h
         MachineStackMarker.h
         MarkStack.h
         MarkedAllocator.h
         MarkedAllocatorInlines.h
         MarkedBlock.h
         MarkedBlockInlines.h
         MarkedBlockSet.h
         MarkedSpace.h
         MarkedSpaceInlines.h
         MarkingConstraint.h
         MarkingConstraintSet.h
         MutatorScheduler.h
         MutatorState.h
         OpaqueRootSet.h
         PreventCollectionScope.h
         RegisterState.h
         ReleaseHeapAccessScope.h
         RunningScope.h
         SlotVisitor.h
         SlotVisitorInlines.h
         SpaceTimeMutatorScheduler.h
         StochasticSpaceTimeMutatorScheduler.h
         StopIfNecessaryTimer.h
         Strong.h
         StrongInlines.h
         Subspace.h
         SubspaceInlines.h
         SweepingScope.h
         SynchronousStopTheWorldMutatorScheduler.h
         TinyBloomFilter.h
         UnconditionalFinalizer.h
         VisitRaceKey.h
         VisitingTimeout.h
         Weak.h
         WeakBlock.h
         WeakHandleOwner.h
         WeakImpl.h
         WeakInlines.h
         WeakReferenceHarvester.h
         WeakSet.h
         WeakSetInlines.h
         WriteBarrierBuffer.h
         WriteBarrierSupport.h

      weex_core/Source/include/JavaScriptCore/inspector:
         ScriptArguments.h
         ScriptCallStackFactory.h

      weex_core/Source/include/JavaScriptCore/interpreter:
         AbstractPC.h
         CLoopStack.h
         CLoopStackInlines.h
         CachedCall.h
         CallFrame.h
         CallFrameClosure.h
         FrameTracers.h
         Interpreter.h
         InterpreterInlines.h
         ProtoCallFrame.h
         Register.h
         ShadowChicken.h
         ShadowChickenInlines.h
         StackVisitor.h
         VMEntryRecord.h

      weex_core/Source/include/JavaScriptCore/jit:
         AssemblyHelpers.h
         BinarySwitch.h
         CCallHelpers.h
         CachedRecovery.h
         CallFrameShuffleData.h
         CallFrameShuffler.h
         CompactJITCodeMap.h
         ExecutableAllocationFuzz.h
         ExecutableAllocator.h
         FPRInfo.h
         GCAwareJITStubRoutine.h
         GPRInfo.h
         HostCallReturnValue.h
         ICStats.h
         JIT.h
         JITAddGenerator.h
         JITBitAndGenerator.h
         JITBitBinaryOpGenerator.h
         JITBitOrGenerator.h
         JITBitXorGenerator.h
         JITCode.h
         JITCompilationEffort.h
         JITDisassembler.h
         JITDivGenerator.h
         JITExceptions.h
         JITInlineCacheGenerator.h
         JITInlines.h
         JITLeftShiftGenerator.h
         JITMathIC.h
         JITMathICForwards.h
         JITMathICInlineResult.h
         JITMulGenerator.h
         JITNegGenerator.h
         JITOperations.h
         JITRightShiftGenerator.h
         JITStubRoutine.h
         JITSubGenerator.h
         JITThunks.h
         JITToDFGDeferredCompilationCallback.h
         JITWorklist.h
         JSInterfaceJIT.h
         PCToCodeOriginMap.h
         PolymorphicCallStubRoutine.h
         Reg.h
         RegisterAtOffset.h
         RegisterAtOffsetList.h
         RegisterMap.h
         RegisterSet.h
         Repatch.h
         ScratchRegisterAllocator.h
         SetupVarargsFrame.h
         SlowPathCall.h
         SnippetOperand.h
         SpecializedThunkJIT.h
         SpillRegistersMode.h
         TagRegistersMode.h
         TempRegisterSet.h
         ThunkGenerator.h
         ThunkGenerators.h
         UnusedPointer.h

      weex_core/Source/include/JavaScriptCore/parser:
         ASTBuilder.h
         Lexer.h
         ModuleAnalyzer.h
         ModuleScopeData.h
         NodeConstructors.h
         Nodes.h
         Parser.h
         ParserArena.h
         ParserError.h
         ParserFunctionInfo.h
         ParserModes.h
         ParserTokens.h
         ResultType.h
         SourceCode.h
         SourceCodeKey.h
         SourceProvider.h
         SourceProviderCache.h
         SourceProviderCacheItem.h
         SyntaxChecker.h
         UnlinkedSourceCode.h
         VariableEnvironment.h

      weex_core/Source/include/JavaScriptCore/profiler:
         ProfilerBytecode.h
         ProfilerBytecodeSequence.h
         ProfilerBytecodes.h
         ProfilerCompilation.h
         ProfilerCompilationKind.h
         ProfilerCompiledBytecode.h
         ProfilerDatabase.h
         ProfilerEvent.h
         ProfilerExecutionCounter.h
         ProfilerJettisonReason.h
         ProfilerOSRExit.h
         ProfilerOSRExitSite.h
         ProfilerOrigin.h
         ProfilerOriginStack.h
         ProfilerProfiledBytecodes.h
         ProfilerUID.h

      weex_core/Source/include/JavaScriptCore/runtime:
         AbstractModuleRecord.h
         ArgList.h
         ArgumentsMode.h
         ArityCheckMode.h
         ArrayBuffer.h
         ArrayBufferNeuteringWatchpoint.h
         ArrayBufferSharingMode.h
         ArrayBufferView.h
         ArrayConstructor.h
         ArrayConventions.h
         ArrayIteratorAdaptiveWatchpoint.h
         ArrayIteratorPrototype.h
         ArrayPrototype.h
         ArrayStorage.h
         AsyncFunctionConstructor.h
         AsyncFunctionPrototype.h
         AtomicsObject.h
         AuxiliaryBarrier.h
         AuxiliaryBarrierInlines.h
         BasicBlockLocation.h
         BatchedTransitionOptimizer.h
         BigInteger.h
         BooleanConstructor.h
         BooleanObject.h
         BooleanPrototype.h
         BundlePath.h
         Butterfly.h
         ButterflyInlines.h
         CallData.h
         CatchScope.h
         ClassInfo.h
         ClonedArguments.h
         CodeCache.h
         CodeSpecializationKind.h
         CommonIdentifiers.h
         CommonSlowPaths.h
         CommonSlowPathsExceptions.h
         CompilationResult.h
         Completion.h
         ConcurrentJITLock.h
         ConcurrentJSLock.h
         ConfigFile.h
         ConsoleClient.h
         ConsoleObject.h
         ConsoleTypes.h
         ConstantMode.h
         ConstructAbility.h
         ConstructData.h
         ControlFlowProfiler.h
         CustomGetterSetter.h
         DataView.h
         DateConstructor.h
         DateConversion.h
         DateInstance.h
         DateInstanceCache.h
         DatePrototype.h
         DefinePropertyAttributes.h
         DirectArguments.h
         DirectArgumentsOffset.h
         DirectEvalExecutable.h
         DumpContext.h
         ECMAScriptSpecInternalFunctions.h
         EnumerationMode.h
         Error.h
         ErrorConstructor.h
         ErrorHandlingScope.h
         ErrorInstance.h
         ErrorPrototype.h
         EvalExecutable.h
         Exception.h
         ExceptionEventLocation.h
         ExceptionFuzz.h
         ExceptionHelpers.h
         ExceptionScope.h
         ExecutableBase.h
         Float32Array.h
         Float64Array.h
         FunctionConstructor.h
         FunctionExecutable.h
         FunctionExecutableDump.h
         FunctionHasExecutedCache.h
         FunctionPrototype.h
         FunctionRareData.h
         GeneratorFunctionConstructor.h
         GeneratorFunctionPrototype.h
         GeneratorPrototype.h
         GenericArguments.h
         GenericArgumentsInlines.h
         GenericOffset.h
         GenericTypedArrayView.h
         GenericTypedArrayViewInlines.h
         GetPutInfo.h
         GetterSetter.h
         HasOwnPropertyCache.h
         HashMapImpl.h
         Identifier.h
         IdentifierInlines.h
         IndexingHeader.h
         IndexingHeaderInlines.h
         IndexingType.h
         IndirectEvalExecutable.h
         InferredType.h
         InferredTypeTable.h
         InferredValue.h
         InitializeThreading.h
         InspectorInstrumentationObject.h
         Int16Array.h
         Int32Array.h
         Int8Array.h
         IntegralTypedArrayBase.h
         InternalFunction.h
         IntlCollator.h
         IntlCollatorConstructor.h
         IntlCollatorPrototype.h
         IntlDateTimeFormat.h
         IntlDateTimeFormatConstructor.h
         IntlDateTimeFormatPrototype.h
         IntlNumberFormat.h
         IntlNumberFormatConstructor.h
         IntlNumberFormatPrototype.h
         IntlObject.h
         IntlObjectInlines.h
         Intrinsic.h
         IterationKind.h
         IterationStatus.h
         IteratorOperations.h
         IteratorPrototype.h
         JSAPIValueWrapper.h
         JSArray.h
         JSArrayBuffer.h
         JSArrayBufferConstructor.h
         JSArrayBufferPrototype.h
         JSArrayBufferView.h
         JSArrayBufferViewInlines.h
         JSArrayInlines.h
         JSAsyncFunction.h
         JSBoundFunction.h
         JSCInlines.h
         JSCJSValue.h
         JSCJSValueInlines.h
         JSCallee.h
         JSCell.h
         JSCellInlines.h
         JSCustomGetterSetterFunction.h
         JSDataView.h
         JSDataViewPrototype.h
         JSDateMath.h
         JSDestructibleObject.h
         JSDestructibleObjectSubspace.h
         JSEnvironmentRecord.h
         JSExportMacros.h
         JSFixedArray.h
         JSFloat32Array.h
         JSFloat64Array.h
         JSFunction.h
         JSFunctionInlines.h
         JSGeneratorFunction.h
         JSGenericTypedArrayView.h
         JSGenericTypedArrayViewConstructor.h
         JSGenericTypedArrayViewConstructorInlines.h
         JSGenericTypedArrayViewInlines.h
         JSGenericTypedArrayViewPrototype.h
         JSGenericTypedArrayViewPrototypeFunctions.h
         JSGenericTypedArrayViewPrototypeInlines.h
         JSGlobalLexicalEnvironment.h
         JSGlobalObject.h
         JSGlobalObjectDebuggable.h
         JSGlobalObjectFunctions.h
         JSGlobalObjectInlines.h
         JSInt16Array.h
         JSInt32Array.h
         JSInt8Array.h
         JSInternalPromise.h
         JSInternalPromiseConstructor.h
         JSInternalPromiseDeferred.h
         JSInternalPromisePrototype.h
         JSJob.h
         JSLexicalEnvironment.h
         JSLock.h
         JSMap.h
         JSMapIterator.h
         JSModuleEnvironment.h
         JSModuleLoader.h
         JSModuleNamespaceObject.h
         JSModuleRecord.h
         JSNativeStdFunction.h
         JSONObject.h
         JSObject.h
         JSObjectInlines.h
         JSPromise.h
         JSPromiseConstructor.h
         JSPromiseDeferred.h
         JSPromisePrototype.h
         JSPropertyNameEnumerator.h
         JSPropertyNameIterator.h
         JSProxy.h
         JSScope.h
         JSScriptFetcher.h
         JSSegmentedVariableObject.h
         JSSegmentedVariableObjectSubspace.h
         JSSet.h
         JSSetIterator.h
         JSSourceCode.h
         JSString.h
         JSStringBuilder.h
         JSStringInlines.h
         JSStringIterator.h
         JSStringJoiner.h
         JSStringSubspace.h
         JSSymbolTableObject.h
         JSTemplateRegistryKey.h
         JSType.h
         JSTypeInfo.h
         JSTypedArrayConstructors.h
         JSTypedArrayPrototypes.h
         JSTypedArrayViewConstructor.h
         JSTypedArrayViewPrototype.h
         JSTypedArrays.h
         JSUint16Array.h
         JSUint32Array.h
         JSUint8Array.h
         JSUint8ClampedArray.h
         JSWeakMap.h
         JSWeakSet.h
         JSWithScope.h
         JSWrapperObject.h
         LazyClassStructure.h
         LazyClassStructureInlines.h
         LazyProperty.h
         LazyPropertyInlines.h
         LiteralParser.h
         Lookup.h
         MachineContext.h
         MapBase.h
         MapConstructor.h
         MapIteratorPrototype.h
         MapPrototype.h
         MatchResult.h
         MathCommon.h
         MathObject.h
         MemoryStatistics.h
         Microtask.h
         ModuleLoaderPrototype.h
         ModuleProgramExecutable.h
         NativeErrorConstructor.h
         NativeErrorPrototype.h
         NativeExecutable.h
         NativeStdFunctionCell.h
         NullGetterFunction.h
         NullSetterFunction.h
         NumberConstructor.h
         NumberObject.h
         NumberPrototype.h
         NumericStrings.h
         ObjectConstructor.h
         ObjectPrototype.h
         Operations.h
         Options.h
         ParseInt.h
         PlatformThread.h
         PrivateName.h
         ProgramExecutable.h
         PropertyDescriptor.h
         PropertyMapHashTable.h
         PropertyName.h
         PropertyNameArray.h
         PropertyOffset.h
         PropertySlot.h
         PropertyStorage.h
         Protect.h
         PrototypeMap.h
         PrototypeMapInlines.h
         ProxyConstructor.h
         ProxyObject.h
         ProxyRevoke.h
         PureNaN.h
         PutDirectIndexMode.h
         PutPropertySlot.h
         ReflectObject.h
         RegExp.h
         RegExpCache.h
         RegExpCachedResult.h
         RegExpConstructor.h
         RegExpInlines.h
         RegExpKey.h
         RegExpMatchesArray.h
         RegExpObject.h
         RegExpObjectInlines.h
         RegExpPrototype.h
         RuntimeFlags.h
         RuntimeType.h
         SamplingCounter.h
         SamplingProfiler.h
         ScopeOffset.h
         ScopedArguments.h
         ScopedArgumentsTable.h
         ScriptExecutable.h
         ScriptFetcher.h
         SetConstructor.h
         SetIteratorPrototype.h
         SetPrototype.h
         SimpleTypedArrayController.h
         SlowPathReturnType.h
         SmallStrings.h
         SourceOrigin.h
         SparseArrayValueMap.h
         StackAlignment.h
         StackFrame.h
         StrictEvalActivation.h
         StringConstructor.h
         StringIteratorPrototype.h
         StringObject.h
         StringPrototype.h
         StringRecursionChecker.h
         Structure.h
         StructureChain.h
         StructureIDBlob.h
         StructureIDTable.h
         StructureInlines.h
         StructureRareData.h
         StructureRareDataInlines.h
         StructureTransitionTable.h
         Symbol.h
         SymbolConstructor.h
         SymbolObject.h
         SymbolPrototype.h
         SymbolTable.h
         TemplateRegistry.h
         TemplateRegistryKey.h
         TemplateRegistryKeyTable.h
         TestRunnerUtils.h
         ThrowScope.h
         ToNativeFromValue.h
         TypeError.h
         TypeLocationCache.h
         TypeProfiler.h
         TypeProfilerLog.h
         TypeSet.h
         TypedArrayAdaptors.h
         TypedArrayBase.h
         TypedArrayController.h
         TypedArrayInlines.h
         TypedArrayType.h
         TypedArrays.h
         TypeofType.h
         Uint16Array.h
         Uint16WithFraction.h
         Uint32Array.h
         Uint8Array.h
         Uint8ClampedArray.h
         VM.h
         VMEntryScope.h
         VMInlines.h
         VMTraps.h
         VarOffset.h
         Watchdog.h
         WeakGCMap.h
         WeakGCMapInlines.h
         WeakMapConstructor.h
         WeakMapData.h
         WeakMapPrototype.h
         WeakSetConstructor.h
         WeakSetPrototype.h
         WebAssemblyExecutable.h
         WriteBarrier.h
         WriteBarrierInlines.h

      weex_core/Source/include/JavaScriptCore/yarr:
         RegularExpression.h
         Yarr.h
         YarrCanonicalize.h
         YarrInterpreter.h
         YarrJIT.h
         YarrParser.h
         YarrPattern.h
         YarrSyntaxChecker.h

   Other files in Webkit:
      weex_core/Source/android/jsengine/dependence:
         OptionsCommon.cmake
         OptionsJSCOnly.cmake
         WeexCommon.cmake
         WeexFS.cmake
         WeexFeatures.cmake
         WeexHelpers.cmake
         WeexMacros.cmake

   The copyright for files above is listed below:

      weex_core/Source/include/wtf/Brigand.h:
         // Brigand library
         //
         // Copyright (c) 2015 Edouard Alligand and Joel Falcou
         //
         // Boost Software License - Version 1.0 - August 17th, 2003
         //
         // Permission is hereby granted, free of charge, to any person or organization
         // obtaining a copy of the software and accompanying documentation covered by
         // this license (the "Software") to use, reproduce, display, distribute,
         // execute, and transmit the Software, and to prepare derivative works of the
         // Software, and to permit third-parties to whom the Software is furnished to
         // do so, all subject to the following:
         //
         // The copyright notices in the Software and this entire statement, including
         // the above license grant, this restriction and the following disclaimer,
         // must be included in all copies of the Software, in whole or in part, and
         // all derivative works of the Software, unless such copies or derivative
         // works are solely in the form of machine-executable object code generated by
         // a source language processor.
         //
         // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
         // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
         // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
         // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
         // DEALINGS IN THE SOFTWARE.

         // This file contains a standalone version of Edouard Alligand and Joel Falcou's 
         // Brigand library, which can be found at https://github.com/edouarda/brigand

      weex_core/Source/include/wtf/Optional.h:
         // Copyright (C) 2011 - 2012 Andrzej Krzemienski.
         //
         // Use, modification, and distribution is subject to the Boost Software
         // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
         // http://www.boost.org/LICENSE_1_0.txt)
         //
         // The idea and interface is based on Boost.Optional library
         // authored by Fernando Luis Cacciola Carballal
         //
         // Boost Software License - Version 1.0 - August 17th, 2003
         //
         // Permission is hereby granted, free of charge, to any person or organization
         // obtaining a copy of the software and accompanying documentation covered by
         // this license (the "Software") to use, reproduce, display, distribute,
         // execute, and transmit the Software, and to prepare derivative works of the
         // Software, and to permit third-parties to whom the Software is furnished to
         // do so, all subject to the following:
         //
         // The copyright notices in the Software and this entire statement, including
         // the above license grant, this restriction and the following disclaimer,
         // must be included in all copies of the Software, in whole or in part, and
         // all derivative works of the Software, unless such copies or derivative
         // works are solely in the form of machine-executable object code generated by
         // a source language processor.
         //
         // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
         // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
         // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
         // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
         // DEALINGS IN THE SOFTWARE.

         // Copied from https://github.com/akrzemi1/Optional (727c729dd1d9f06f225868280e50154594d7e59d)

         // Modified to make it compile with exceptions disabled.

      weex_core/Source/include/wtf/Variant.h:
         // Copyright (c) 2015, Just Software Solutions Ltd
         // All rights reserved.
         //
         // Redistribution and use in source and binary forms, with or
         // without modification, are permitted provided that the
         // following conditions are met:
         //
         // 1. Redistributions of source code must retain the above
         // copyright notice, this list of conditions and the following
         // disclaimer.
         //
         // 2. Redistributions in binary form must reproduce the above
         // copyright notice, this list of conditions and the following
         // disclaimer in the documentation and/or other materials
         // provided with the distribution.
         //
         // 3. Neither the name of the copyright holder nor the names of
         // its contributors may be used to endorse or promote products
         // derived from this software without specific prior written
         // permission.
         //
         // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
         // CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
         // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
         // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
         // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
         // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
         // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
         // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
         // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
         // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
         // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
         // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

         // Copied from https://bitbucket.org/anthonyw/variant/src (5bce47fa788648f79e5ea1d77b0eef2e8f0b2999)

         // Modified to make it compile with exceptions disabled

      weex_core/Source/android/jsengine/dependence/icu:
      weex_core/Source/include/wtf/icu/unicode:
      weex_core/Source/base/third_party/icu:
         COPYRIGHT AND PERMISSION NOTICE

         Copyright (c) 1995-2006 International Business Machines Corporation and others

         All rights reserved.

         Permission is hereby granted, free of charge, to any person obtaining a copy of this
         software and associated documentation files (the "Software"), to deal in the Software
         without restriction, including without limitation the rights to use, copy, modify,
         merge, publish, distribute, and/or sell copies of the Software, and to permit persons
         to whom the Software is furnished to do so, provided that the above copyright notice(s)
         and this permission notice appear in all copies of the Software and that both the above
         copyright notice(s) and this permission notice appear in supporting documentation.

         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
         INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
         PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER
         OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
         CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
         PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
         OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

         Except as contained in this notice, the name of a copyright holder shall not be used in
         advertising or otherwise to promote the sale, use or other dealings in this Software
         without prior written authorization of the copyright holder.
      
      weex_core/Source/include/wtf/text:
         /* 
         * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
         * Copyright (C) 2003, 2006, 2008, 2009, 2010, 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2004-2006, 2008, 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2004-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2005-2010, 2013-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org>
         * Copyright (C) 2006 Apple Inc.
         * Copyright (C) 2006 Lars Knoll <lars@trolltech.com>
         * Copyright (C) 2006-2008, 2012-2013, 2016 Apple Inc. All rights reserved
         * Copyright (C) 2007 Apple Inc. All rights reserved.
         * Copyright (C) 2007-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2009 Google Inc. All rights reserved.
         * Copyright (C) 2009-2010, 2012-2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2010, Google Inc. All rights reserved.
         * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011 Apple Inc. All Rights Reserved.
         * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
         * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2012 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012 Google Inc. All rights reserved.
         * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2014-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2015-2016 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) 2017 Apple Inc. All rights reserved.
         * Copyright (C) Research In Motion Limited 2009. All rights reserved.
         * Copyright (C) Research In Motion Limited 2011. All rights reserved.

         * Redistribution and use in source and binary forms, with or without
         * modification, are permitted provided that the following conditions
         * are met:
         *
         * 1.  Redistributions of source code must retain the above copyright
         *     notice, this list of conditions and the following disclaimer. 
         * 2.  Redistributions in binary form must reproduce the above copyright
         *     notice, this list of conditions and the following disclaimer in the
         *     documentation and/or other materials provided with the distribution. 
         * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
         *     its contributors may be used to endorse or promote products derived
         *     from this software without specific prior written permission. 
         *
         * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
         * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
         * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
         * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
         * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
         * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
         * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
         * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
         * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         */

      Files under(excluding subdirectory) weex_core/Source/include/wtf except for Variant.h, Brigand.h and Optional.h :
         /*
         *  Copyright (C) 2003, 2008, 2012 Apple Inc. All rights reserved.
         *  Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
         *  Copyright (C) 2005, 2006, 2007, 2008, 2010, 2013, 2014 Apple Inc. All rights reserved.
         *  Copyright (C) 2005, 2006, 2007, 2008, 2014 Apple Inc. All rights reserved.
         *  Copyright (C) 2005-2009, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2005-2017 Apple Inc. All rights reserved.
         *  Copyright (C) 2006 Apple Inc.
         *  Copyright (C) 2006, 2009, 2011 Apple Inc. All rights reserved.
         *  Copyright (C) 2006, 2010 Apple Inc. All rights reserved.
         *  Copyright (C) 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
         * Copyright (C) 2003, 2006, 2007, 2013 Apple Inc.  All rights reserved.
         * Copyright (C) 2003, 2016 Apple Inc.  All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2012, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2008, 2011, 2013, 2017 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2008, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2005-2006, 2008, 2010, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2006 Apple Inc.
         * Copyright (C) 2006 Apple Inc.  All rights reserved.
         * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2007, 2008, 2009, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2007, 2008, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2006-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2007 Apple Inc.  All rights reserved.
         * Copyright (C) 2007 Apple Inc. All rights reserved.
         * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)
         * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2010, 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2010, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2010, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2007-2009 Torch Mobile, Inc.
         * Copyright (C) 2007-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2007-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2008 David Levin <levin@chromium.org>
         * Copyright (C) 2008 Google Inc. All rights reserved.
         * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
         * Copyright (C) 2008, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2008, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
         * Copyright (C) 2009 Apple Inc. All rights reserved.
         * Copyright (C) 2009 Google Inc. All rights reserved.
         * Copyright (C) 2009 Jian Li <jianli@chromium.org>
         * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
         * Copyright (C) 2009, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2010 Google Inc. All rights reserved.
         * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
         * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2010 Research In Motion Limited. All rights reserved.
         * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
         * Copyright (C) 2010, 2011 Research In Motion Limited. All rights reserved.
         * Copyright (C) 2010, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2010-2017 Apple Inc. All Rights Reserved.
         * Copyright (C) 2011 Apple Inc.  All rights reserved.
         * Copyright (C) 2011 Apple Inc. All rights reserved.
         * Copyright (C) 2011 Gabor Loki <loki@webkit.org>
         * Copyright (C) 2011 Google Inc. All rights reserved.
         * Copyright (C) 2011 Research In Motion Limited. All rights reserved.
         * Copyright (C) 2011 University of Szeged
         * Copyright (C) 2011, 2012, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, Benjamin Poulain <ikipou@gmail.com>
         * Copyright (C) 2011-2017 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2012 University of Szeged. All rights reserved.
         * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2013 Google, Inc. All Rights Reserved.
         * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
         * Copyright (C) 2013 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2013 Samsung Electronics. All rights reserved.
         * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2015, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013-2014 Apple Inc. All rights reserved.
         * Copyright (C) 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2014 Raspberry Pi Foundation. All Rights Reserved.
         * Copyright (C) 2014 University of Washington. All rights reserved.
         * Copyright (C) 2014, 2015, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2015 Apple Inc. All Rights Reserved.
         * Copyright (C) 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2015 Electronic Arts, Inc. All rights reserved.
         * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2015-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2016 Apple Inc.  All rights reserved.
         * Copyright (C) 2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2017 Apple Inc. All rights reserved.
         * Copyright (C) Google, Inc. All rights reserved.
         * Copyright (c) 2012, Google Inc. All rights reserved.
         * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
         * Copyright (C) 2012 Google Inc. All rights reserved.
         *
         * Redistribution and use in source and binary forms, with or without
         * modification, are permitted provided that the following conditions
         * are met:
         * 1. Redistributions of source code must retain the above copyright
         *    notice, this list of conditions and the following disclaimer.
         * 2. Redistributions in binary form must reproduce the above copyright
         *    notice, this list of conditions and the following disclaimer in the
         *    documentation and/or other materials provided with the distribution.
         *
         * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
         * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
         * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
         * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
         * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
         * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
         * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
         * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
         * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
         */
      
      weex_core/Source/include/JavaScriptCore:
        /*
         *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
         *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
         *  Copyright (C) 1999-2001, 2004 Harri Porten (porten@kde.org)
         *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
         *  Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2013 Apple Inc. All rights reserved.
         *  Copyright (C) 2002, 2005-2009, 2013-2014, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2014 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2004, 2005, 2007, 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2012, 2015 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2013 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006, 2007, 2008, 2009, 2012 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006, 2007, 2008, 2009, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006, 2007, 2008, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2006-2009, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2007 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2007, 2008, 2009, 2012, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2007, 2008, 2012, 2016 Apple Inc. All Rights Reserved.
         *  Copyright (C) 2003, 2007, 2009, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003, 2007-2008, 2012, 2016 Apple Inc. All Rights Reserved.
         *  Copyright (C) 2003, 2007-2008, 2016 Apple Inc. All Rights Reserved.
         *  Copyright (C) 2003-2009, 2013, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2003-2017 Apple Inc. All rights reserved.
         *  Copyright (C) 2004, 2005, 2006, 2007, 2008, 2014 Apple Inc. All rights reserved.
         *  Copyright (C) 2004, 2008, 2009 Apple Inc. All rights reserved.
         *  Copyright (C) 2005, 2007, 2008, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2006 Maks Orlovich
         *  Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
         *  Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2006, 2008, 2012 Apple Inc. All rights reserved.
         *  Copyright (C) 2006-2011, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca)
         *  Copyright (C) 2007 Eric Seidel (eric@webkit.org)
         *  Copyright (C) 2007 Eric Seidel <eric@webkit.org>
         *  Copyright (C) 2007 Maks Orlovich
         *  Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2007, 2008, 2009, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2007, 2011, 2015 Apple Inc. All rights reserved.
         *  Copyright (C) 2007-2008, 2011, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2007-2008, 2013, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2007-2008, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2007-2009, 2014-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2008 Apple Inc. All rights reserved.
         *  Copyright (C) 2008, 2011 Apple Inc. All rights reserved.
         *  Copyright (C) 2008, 2011, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2008, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2008, 2016-2017 Apple Inc. All rights reserved.
         *  Copyright (C) 2008-2017 Apple Inc. All Rights Reserved.
         *  Copyright (C) 2009 Torch Mobile, Inc.
         *  Copyright (C) 2009, 2013, 2015-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2010 Peter Varga (pvarga@inf.u-szeged.hu), University of Szeged
         *  Copyright (C) 2010 Zoltan Herczeg (zherczeg@inf.u-szeged.hu)
         *  Copyright (C) 2011 Apple Inc. All rights reserved.
         *  Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2011-2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>.
         *  Copyright (C) 2016 Apple Inc. All rights reserved.
         *  Copyright (C) 2016 Oleksandr Skachkov (gskachkov@gmail.com)
         *  Copyright (c) 2007, 2008, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
         * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved.
         * Copyright (C) 2005, 2006, 2007, 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2005-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2006 Apple Inc.  All rights reserved.
         * Copyright (C) 2006 Apple Inc. All rights reserved.
         * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
         * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
         * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2006, 2008, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2007 Apple Inc.  All rights reserved.
         * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
         * Copyright (C) 2007, 2008, 2012, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2007, 2008, 2012-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2008 Alp Toker <alp@atoker.com>
         * Copyright (C) 2008 Apple Inc.  All rights reserved.
         * Copyright (C) 2008 Apple Inc. All rights reserved.
         * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>
         * Copyright (C) 2008 Kelvin W Sherlock (ksherlock@gmail.com)
         * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2009, 2010, 2014 Apple Inc. All Rights Reserved.
         * Copyright (C) 2008, 2009, 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2009, 2012-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2009, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2009, 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2009, 2013-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2012, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2012-2013, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2012-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2014 Apple Inc. All Rights Reserved.
         * Copyright (C) 2008, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2008, 2017 Apple Inc. All rights reserved.
         * Copyright (C) 2008-2009, 2013-2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008-2009, 2015-2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2008-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2008-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2008-2017 Apple Inc.
         * Copyright (C) 2008-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2009 Apple Inc.  All rights reserved.
         * Copyright (C) 2009 Apple Inc. All Rights Reserved.
         * Copyright (C) 2009 Apple Inc. All rights reserved.
         * Copyright (C) 2009 Google Inc. All rights reserved.
         * Copyright (C) 2009 University of Szeged
         * Copyright (C) 2009, 2010 University of Szeged
         * Copyright (C) 2009, 2010, 2012-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2010-2012, 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2011 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2012, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2012, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2013-2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2009-2011 STMicroelectronics. All rights reserved.
         * Copyright (C) 2009-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2010 Apple Inc. All rights reserved.
         * Copyright (C) 2010 MIPS Technologies, Inc. All rights reserved.
         * Copyright (C) 2010 Peter Varga (pvarga@inf.u-szeged.hu), University of Szeged
         * Copyright (C) 2010 Renata Hodovan (hodovan@inf.u-szeged.hu)
         * Copyright (C) 2010 Research In Motion Limited. All rights reserved.
         * Copyright (C) 2010 University of Szeged
         * Copyright (C) 2010, 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2010, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2010, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2010-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011 Apple Inc.  All rights reserved.
         * Copyright (C) 2011 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2012, 2013, 2015, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2013-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2014, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2013, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2011-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2012 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012 Apple Inc. All rights reserved.
         * Copyright (C) 2012 Google Inc. All rights reserved.
         * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com>
         * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
         * Copyright (C) 2012, 2013 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2013, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2014, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012, 2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2013, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2015 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2012-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2012-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2013 Apple Inc. All Rights Reserved.
         * Copyright (C) 2013 Apple Inc. All rights reserved.
         * Copyright (C) 2013 Apple, Inc. All rights reserved.
         * Copyright (C) 2013 Cisco Systems, Inc. All rights reserved.
         * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2016 Apple, Inc. All rights reserved.
         * Copyright (C) 2013, 2016-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2013, 2017 Apple Inc. All rights reserved.
         * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
         * Copyright (C) 2013-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2013-2017 Apple Inc. All Rights Reserved.
         * Copyright (C) 2013-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2014 Apple Inc.  All rights reserved.
         * Copyright (C) 2014 Apple Inc. All Rights Reserved.
         * Copyright (C) 2014 Apple Inc. All rights reserved.
         * Copyright (C) 2014 Saam Barati. <saambarati1@gmail.com>
         * Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2014, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2014-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2014-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2015 Andy VanWagoner (thetalecrafter@gmail.com)
         * Copyright (C) 2015 Apple Inc.  All rights reserved.
         * Copyright (C) 2015 Apple Inc. All Rights Reserved.
         * Copyright (C) 2015 Apple Inc. All rights reserved.
         * Copyright (C) 2015 Apple, Inc. All rights reserved.
         * Copyright (C) 2015 Dominic Szablewski (dominic@phoboslab.org)
         * Copyright (C) 2015 Igalia S.L.
         * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
         * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) 2015, 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
         * Copyright (C) 2015-2016 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) 2015-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2016 Apple Inc. All Rights Reserved.
         * Copyright (C) 2016 Apple Inc. All rights reserved.
         * Copyright (C) 2016 Caitlin Potter <caitp@igalia.com>.
         * Copyright (C) 2016 Yusuke Suzuki <utatane.tea@gmail.com>
         * Copyright (C) 2016 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) 2016 Yusuke Suzuki <yusuke.suzuki@sslab.ics.keio.ac.jp>
         * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
         * Copyright (C) 2017 Apple Inc.
         * Copyright (C) 2017 Apple Inc. All rights reserved.
         * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>
         * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>.
         * Copyright (C) Saam Barati <saambarati1@gmail.com>. All rights reserved.
         * Copyright (c) 2010 Google Inc. All rights reserved.
         * Copyright (c) 2010, Google Inc. All rights reserved.
         * 
         *
         * Redistribution and use in source and binary forms, with or without
         * modification, are permitted provided that the following conditions
         * are met:
         * 1. Redistributions of source code must retain the above copyright
         *    notice, this list of conditions and the following disclaimer.
         * 2. Redistributions in binary form must reproduce the above copyright
         *    notice, this list of conditions and the following disclaimer in the
         *    documentation and/or other materials provided with the distribution.
         *
         * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
         * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
         * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
         * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
         * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
         * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
         * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
         * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
         * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
         * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         */